<div dir="ltr"><div class="gmail_extra">Hi Eric,<br><br></div><div class="gmail_extra"><div class="gmail_quote">On Mon, Jan 15, 2018 at 2:25 AM, Eric Muller <span dir="ltr"><<a href="mailto:emuller@amazon.com" target="_blank">emuller@amazon.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">It seems that with a font that has only a 3, 0 cmap subtable (and may be some macintosh subtables), then HB will automatically do the shift by F000 (in the function get_glyph_from_symbol) for code points below U+00FF that are not mapped by the subtable.<br></blockquote><div><br></div><div>Right. Only in hb-ot-func though. Client font funcs can do otherwise.<br><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
It is clear that when U+0041 A is set with a symbol font, then that U+0041 has actually the semantics of a PUA code point, and certainly should not be treated as an "A". That's the whole point of a 3,0 cmap subtable.<br></blockquote><div><br></div><div>Correct.<br> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Consider an HTML page. The font-family is only a request and there is no guarantee that the actual font will or will not be a symbol font. Thus the semantic of the HTML page can change depending on the browser environment. Outside a browser, it seems that the safe treatment is therefore to consider all code points below U+00FF as PUA, which is clearly not tenable. So in that environment, I think that the shift should not be done. Of course, U+F041 should work.<br></blockquote><div><br></div><div>My take on this is that it's a bug of the font fallback logic if it falls back to a symbol font.  I changed fontconfig to never do that.<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Note that behavior of Word 2016 on Windows is actually more elaborate: enter U+0041, and set it with a non-symbol font; copy/paste or save to a text file, and the result is U+0041; but set this A in a symbol font, and copy/paste or save to a text file, and the result is U+F041.<br></blockquote><div><br></div><div>That's good behavior, but beyond what HarfBuzz can do.<br> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I think that the shift should be controllable by the client, rather than systematically applied. I don't have a strong opinion about the default behavior (i.e. when HB's client does not specify whether the shift should be done or not).<br></blockquote><div><br></div><div>What would clients do with that control then? How would they set it?<br><br></div><div>I implemented this shift in fontconfig and then harfbuzz because in LibreOffice and other software, there were existing documents that referred to windings or other symbol fonts and encoding characters in the ASCII range. It's clear that if the symbol font is asked by name, we should do the shift. If it's NOT, then it should not be chosen to render text to begin with, which means the shift can be applied unconditionally.<br><br></div><div>How does that sound?<br></div><div>behdad<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Thoughts?<br>
<br>
Thanks,<br>
Eric.<br></blockquote><div> </div></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">behdad<br><a href="http://behdad.org/" target="_blank">http://behdad.org/</a></div>
</div></div>