<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><blockquote type="cite" class=""><div class="">On Oct 31, 2021, at 00:46, Michael Brennen <<a href="mailto:michael@fishnet.us" class="">michael@fishnet.us</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">I now understand both why gs is not printing FC debug messages and why it is not matching the same fonts that fc-match does.<div class=""><br class=""></div><div class="">I downloaded the Centos 7 ghostscript source package tonight and found that the only part of fontconfig that it uses is the subset of routines to collect the names of fonts available. It adds the FC font list to its own set of fonts, and it then does its own font searching and matching.</div><div class=""><br class=""></div><div class="">So the font matching problem is somewhere in gs, not fontconfig. Thanks for the responses; I hope knowing that gs’s use of fontconfig is limited comes in useful.<br class=""></div></div></div></blockquote><span style="font-family: FontinSans-Regular;" class=""><div class=""><br class=""></div>This thing got under my skin, and I wanted to find it. I did.</span><div class="" style="font-family: FontinSans-Regular;"><br class=""></div><div class="" style="font-family: FontinSans-Regular;">In an init routine gs pulls in all the fonts into an array; it then iteratively calls a routine to process through the array one font at a time, returning 1 when a font has been processed. When it is through it returns 0, and once that happens the iterator will not be called again.</div><div class="" style="font-family: FontinSans-Regular;"><br class=""></div><div class="" style="font-family: FontinSans-Regular;">Significantly, the iterator also return 0 on errors, and it finds two, both because the font weight did not match what was expected. Once it finds a font with an error processing stops, and everything unprocessed in the list is abandoned. That is why some fonts were not being found; they just happened to fall after the first error.</div><div class="" style="font-family: FontinSans-Regular;"><br class=""></div><div class="" style="font-family: FontinSans-Regular;">I rebuilt gs from its source package and made a few debug changes to find all this. After commenting the 0 returns on errors, the process runs to completion and the desired font is found.</div><div class="" style="font-family: FontinSans-Regular;"><br class=""></div><div class="" style="font-family: FontinSans-Regular;">The FC routine called from gs to get the weight is this:</div><div class="" style="font-family: FontinSans-Regular;"><br class=""></div><div class=""><font face="FontinSans-Regular" class="">     result = FcPatternGetInteger (font, FC_WEIGHT, 0, &weight_fc);</font></div><div class="" style="font-family: FontinSans-Regular;"><br class=""></div><div class="" style="font-family: FontinSans-Regular;">My debug messages, slightly modified from the gs debug messages:</div><div class="" style="font-family: FontinSans-Regular;"><br class=""></div><div class="" style="font-family: FontinSans-Regular;">FC_WEIGHT failed to match on Bahnschrift (and Skia)</div><div class="" style="font-family: FontinSans-Regular;"><div class=""><div class="">FC_WEIGHT failed to match on 32764</div><div class=""><br class=""></div><div class="">weight_fc is an int where the result is stored; that is what is showing 32764 upon return.</div><div class=""><br class=""></div></div></div><div class="" style="font-family: FontinSans-Regular;">I don’t know the significance of the weight reported as 32764 (0x7FFC), or where it might be found in the font file. fc-match reports different weight numbers, 80 for Bahnschrift and 0.5 for Skia. These two fonts errored with the weight = 0x7ffc; I will post the output of fc-match for one below, for what it may be worth.</div><div class="" style="font-family: FontinSans-Regular;"><br class=""></div><div class="" style="font-family: FontinSans-Regular;">From the fontconfig source, it looks like the weight must be between 1 and 1000; that would explain the error, but not why these two fonts have such a strange number.</div><div class=""><br class="webkit-block-placeholder"></div><div class="">I quickly become tangled in FC’s fc_pat.c, which is where most of this seems to happen. I am not sure what an ELT is (element?) is; I found where it is retrieved by indexing into some data structure, but I don’t know what that is.</div><div class=""><br class=""></div><div class="">So my question is, what might be happening with these two fonts? Does anyone knowledgeable about FC recognize why the weight would be reported wrongly for these two fonts?</div><div class=""><br class=""></div><div class="">Thanks much in advance for any help you can offer.</div><div class="">
<br class="">   -- Michael

</div>
<div><br class=""></div><div><div><font face="Menlo" class=""># fc-match -v Bahnschrift</font></div><div><font face="Menlo" class="">Pattern has 36 elts (size 48)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">       </span>family: "Bahnschrift"(s)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>familylang: "en"(s)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">     </span>style: "Regular"(s)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">     </span>stylelang: "en"(s)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">      </span>fullname: "Bahnschrift"(s)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">      </span>fullnamelang: "en"(s)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">   </span>slant: 0(i)(s)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">    </span>weight: 80(f)(s)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">  </span>width: 100(f)(s)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">  </span>size: 12(f)(s)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">    </span>pixelsize: 12.5(f)(s)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">     </span>foundry: "MS  "(w)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre"> </span>hintstyle: 1(i)(w)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>hinting: True(s)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">  </span>verticallayout: False(s)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">  </span>autohint: False(s)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>globaladvance: True(s)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">    </span>file: "/var/www/ext/resources/fonts/bahnschrift.ttf"(w)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre"> </span>index: 0(i)(w)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">    </span>outline: True(w)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">  </span>scalable: True(w)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre"> </span>dpi: 75(f)(s)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">     </span>scale: 1(f)(s)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">    </span>charset:</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">  </span>0000: 00000000 ffffffff ffffffff 7fffffff 00000000 ffffffff ffffffff ffffffff</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">     </span>0001: cfcffcff 7ec3cccf cfff3dfe 7f0ffc3f 0317c642 009d8003 20000000 00000000</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">     </span>0002: 0f000000 00000000 0ad80000 00000000 00000000 18000000 3b0002c0 00000000</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">     </span>0003: 08001fdf 002001c8 00000020 fcff0000 ffffd7f0 fffffffb ffffffff ffffffff</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">     </span>0004: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">     </span>0005: 00000000 00000030 00000000 00000000 00000000 00000000 00000000 00000000</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">     </span>001e: 00000000 00000000 00000000 0000000c 00000000 03000003 00003c00 00000030</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">     </span>0020: 77380000 06010047 00000000 00110000 00000000 7fffffff 00000000 00000000</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">     </span>0021: 00400000 00080004 00000000 00000000 00000000 00000000 00000000 00000000</font></div><div><font face="Menlo" class="">(w)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>lang: aa|ab|av|ay|az-az|ba|be|bg|bi|bin|br|bs|bua|ce|ch|chm|co|cs|cu|cv|da|de|el|en|es|et|eu|fi|fj|fo|fr|fur|fy|gd|gl|gv|ha|haw|ho|hr|hu|ia|ig|id|ie|ik|io|is|it|kaa|kk|kum|kv|ky|lb|lez|ln|lt|lv|mg|mh|mk|mo|mt|nb|nds|nl|nn|no|nr|nso|oc|om|os|pl|pt|rm|ro|ru|sah|sel|sh|sk|sl|sm|sma|smj|smn|so|sq|sr|ss|st|sv|sw|tg|tk|tl|tn|to|tr|ts|tt|tyv|uk|uz|vo|vot|wa|wen|wo|xh|yap|zu|an|crh|csb|fil|hsb|ht|jv|kj|ku-tr|kwm|lg|li|mn-mn|ms|ng|pap-an|pap-aw|rn|rw|sc|sg|sn|su|ty|za(s)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>fontversion: 131072(i)(s)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre"> </span>capability: "otlayout:DFLT otlayout:latn"(w)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">    </span>fontformat: "TrueType"(w)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">       </span>embeddedbitmap: True(s)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">   </span>decorative: False(s)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">      </span>namelang: "en"(s)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">       </span>prgname: "fc-match"(s)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">  </span>postscriptname: "Bahnschrift"(w)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>color: False(w)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">   </span>symbol: False(s)</font></div><div><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">  </span>variable: False(s)</font></div></div><div><br class=""></div><br class=""></body></html>