Is there a “glyph not found” character?

↘锁芯ラ 提交于 2019-12-17 18:55:09

问题


Let's assume we have a text that contains a Unicode character that cannot be displayed because our font has no corresponding glyph. Usually, a placeholder is displayed instead, e.g. a rectangular block thingy (see screenshot).

Is there a "glyph not found" character that reliably produces this glyph? I'd like to write something like "If the following text contains <insert character here> then you need another font..." in a UI.

By the way, I am not talking about � (replacement character). This one is displayed when a Unicode character could not be correctly decoded from a data stream. It does not necessarily produce the same glyph:


回答1:


No, there is no “glyph not found” character. Different programs use different graphic presentations. An empty narrow rectangle is a common rendering, but not the only one. It could also be a rectangle with a question mark in it or with the code number of the character, in hexadecimal, in it.

So it is better to e.g. display a small image of the character along with the character itself, so that the reader can compare them.




回答2:


From the Unicode Spec:

  • http://unicode.org/charts/PDF/U25A0.pdf

U+25A1 □ WHITE SQUARE

  • may be used to represent a missing ideograph

  • U+20DE $⃞ combining enclosing square




回答3:


The glyph-not-found character is specified by the font engine and by the font; there is no fixed character for it.




回答4:


Use a non-character like U+10FFFF (at the very end of the Unicode space) which is 99.99% certain to not be found in the cmap table of any sane font. At least no known Windows system font maps that non-character to a glyph, and highly unlikely any Linux/Mac system font either. Even the all encompassing Last Resort font (http://www.unicode.org/policies/lastresortfont_eula.html) doesn't appear to map it. So while there is no official "glyph not found" character defined in Unicode that will map to the .notdef glyph, the above non-character is in practice guaranteed to display that glyph, whatever the glyph design is in that particular font. The .notdef glyph (glyph id 0 in OpenType) may be a simple hollow rectangle (standard), box with x, box with question mark, blank occasionally (which is bad practice), and sometimes bizarre things like spirals (in Palatino Linotype).




回答5:


Also, (from what I've heard) Japanese uses the GETA MARK 〓 U+3013

CJK Symbols and Punctuation




回答6:


Unicode uses these terms:

  • replacement glyph
  • missing glyph
  • interpretable but unrenderable character

The Unicode Standard (10.0) does not define how they have to look, but it suggests in chapter 5.3 [PDF] that implementations display

[…] distinctive glyphs that give some general indication of their type […]

to distinguish them from "unassigned code points". They give some examples:

The Unicode glossary entry says:

It often is shown as an open or black rectangle.


tl;dr: There is no standardized look/glyph, it’s up to the implementation. To help users, implementations could display glyphs that indicate what type of character it is that can’t be displayed.




回答7:


There is a notdef character that means the glyph is not found. But it has no charcode. You can use the charcodes of controll characters to insert a notdef character (like "", U+0002)




回答8:


There are 3 possible characters for glyph not found.

Check in Microsoft specification, topic Shape of .notdef glyph, https://docs.microsoft.com/en-us/typography/opentype/otspec170/recom#shape-of-notdef-glyph



来源:https://stackoverflow.com/questions/13730544/is-there-a-glyph-not-found-character

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!