notofonts / noto-build

Scripts, data and libraries to work with Noto fonts and sources
Apache License 2.0
5 stars 2 forks source link

merged font loses marks from the second font file #14

Open marekjez86 opened 3 years ago

marekjez86 commented 3 years ago

I merged NotoSans and Canadian Aboriginal using the following command

for i in Thin ExtraLight Light Regular ExtraBold Bold SemiBold Medium Black ; do echo "======" $i; python3 ./notobuilderCLI.py --name "NotoSansCanadiano" --output ttf --scripts CanadianAboriginal Latin Cyrillic Greek --weight $i --contrast Sans ; done 

I did one by one merge because when I specify all the weights the python script crashes - see https://github.com/notofonts/noto-build/issues/13

My hope was that I will get the "sum" of what's in NotoSans and in NotoSansCanadianAboriginal... To verify the result I ran diffenator command to compare NotoSans and NotoSansCanadiano in Regular weight (I ran merge multiple times hence the o suffix this time).

diffenator  ~/github/notofonts/NotoSans/fonts/ttf/unhinted/instance_ttf/NotoSans-Regular.ttf ~/github/notofonts/noto-build/Custom_Fonts/NotoSansCanadiano-Regular.ttf -r ~/NotoSansCanadiano-Regular-img -html >  ~/NotoSansCanadiano-Regular-out.html

I got somewhat less than I expected (please download NotoSansCanadiano.zip file attached here and open the html to see the differences)

The major problem as I see it is that the new font doesn't have (ie, misses) 2582 marks that were present in NotoSans. Nations in Canada use Latin, Greek, Cyrillic, full IPA and CanadianAboriginal scripts. While I didn't investigate the missing marks, my fear is that they come from IPA and as a result the scripts/languages that use it will not have a usable experience with the merged font that we produce.

NotoSansCanadiano.zip

NotoSansCanadiano-Regular.ttf.zip

jbmorizot commented 3 years ago

Hi Marek, thanks for testing notoBuilder. Can you add the --subset Full option? The subsetting options are not yet perfectly integrated, and if you ask for Latin Cyrillic Greek, it will add them but not the IPA. The --subset Full keeps NotoSans as it is, no subsetting anything.

python3 ./notobuilderCLI.py --name "NotoSansCanadiano" --output ttf --scripts CanadianAboriginal Latin Cyrillic Greek --contrast Sans --weight Thin ExtraLight Light Regular ExtraBold Bold SemiBold Medium Black --subset Full

I tested it, and oddly a lot of mark rules are lost when you merge NotoSans into NotoSansCanadianAboriginal. But in the other way everything is kept. It doesn't happen in other merging test (like NotoSans merged into NotoSansTamil or NotoSansArabic, so I guess it's liked to the rules in NotoSansnCanadianAboriginal).

jbmorizot commented 3 years ago

The broken mark rules are caused by of duplicated glyphs in NotoSans and NotoSansCanadianAboriginal. Among them there are some diacritic marks. When NotoSansCanadianAboriginal is the first font in the list, the merger kept the rules involving the diacritic as they are written in this font. Before the merging, NotoSans is subseted and the diacritic is removed and so are the rules that involved it. One solution could be to merge the 2 fonts, and remove all glyphs starting with "#" (it's how fonttools handled duplicate).

marekjez86 commented 3 years ago

I have no problem switching the order, but how a user would know what to do?

should I use the following command

python3 ./notobuilderCLI.py --name "NotoSansCanadiano" --output ttf --scripts Latin Cyrillic Greek CanadianAboriginal --contrast Sans --weight Thin ExtraLight Light Regular ExtraBold Bold SemiBold Medium Black --subset Full

I'll try