Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
筛选用户中缺少的字符’;Java中的s字体_Java_Unicode_Fonts_Filter_Non Printable - Fatal编程技术网

筛选用户中缺少的字符’;Java中的s字体

筛选用户中缺少的字符’;Java中的s字体,java,unicode,fonts,filter,non-printable,Java,Unicode,Fonts,Filter,Non Printable,我想用Java构建一个稍微简单的表(作为练习),以检查最终用户字体中是否存在合法的可打印Unicode代码点。由于某些字体无法打印有效的代码点,因此我必须知道用户字体缺少哪些可打印的代码点,因此无法打印 例如,如果字体只支持拉丁字符,我就无法使用它打印希腊字符,更不用说日语字符了。Unicode表示它们都可以打印,但用户的字体可能不够好 经过一点研究,我已经能够在Eclipse中打印大多数字符(通过调整编码)。但是,我的输出中仍然有一堆未知/不可打印的字符,在我查看输出时,我看到了一些可打印字符

我想用Java构建一个稍微简单的表(作为练习),以检查最终用户字体中是否存在合法的可打印Unicode代码点。由于某些字体无法打印有效的代码点,因此我必须知道用户字体缺少哪些可打印的代码点,因此无法打印

例如,如果字体只支持拉丁字符,我就无法使用它打印希腊字符,更不用说日语字符了。Unicode表示它们都可以打印,但用户的字体可能不够好

经过一点研究,我已经能够在Eclipse中打印大多数字符(通过调整编码)。但是,我的输出中仍然有一堆未知/不可打印的字符,在我查看输出时,我看到了一些可打印字符的所有这些空矩形

我尝试过过滤它们,但找不到任何方法。仅供参考,我基本上只是将一个字符的值设置为50、100或1000,然后通过
for
循环将其递增,以检查我可以或不应该打印哪些字符


有人能给我一些关于从哪里开始的提示吗?

您的任务实际上比编码稍微复杂一些,因为您试图打印的字体在输出中有很大的不同。也就是说,并非所有字体都支持同一组字符。事实上,支持字符范围


这就是说,您现在的问题是:如何检测特定字体是否支持给定字符?而且。。。作为成员的函数。

不清楚您在此处的确切含义。如果您计划按数字播放,则给出具体建议,将“可打印”代码点定义为具有
print
属性的任何代码点,其中该属性定义为

  • \p{print}
    表示
    [[\p{graph}\p{blank}]&&&[^\p{gc=Control}]
  • \p{graph}
    意味着
    [^\p{Whitespace}\p{gc=Control}\p{gc=subrogate}\p{gc=Unassigned}]
  • \p{blank}
    表示
    [\p{Whitespace}&[^\N{LF}\N{VT}\N{FF}\N{CR}\N{NEL}\p{gc=行分隔符}\{gc=段落分隔符}]
或者,如果编译模式时启用了标志:

  • \p{Graph}
    可见字符:
    [^\p{IsWhite\u Space}\p{gc=Cc}\p{gc=Cs}\p{gc=Cn}]
  • \p{Print}
    可打印字符:
    [\p{Graph}\p{Blank}&[^\p{Cntrl}]
  • \p{Blank}
    空格或选项卡:
    [\p{IsWhite\u space}&&[^\p{gc=Zl}\p{gc=Zp}\x0a\x0b\x0c\x0d*\x85]
  • \p{Cntrl}
    控制字符:
    \p{gc=Cc}
  • \p{XDigit}
    十六进制数字:
    [\p{gc=Nd}\p{IsHex\u digit}]
  • \p{Space}
    空白字符:
    \p{IsWhite\u Space}
关于“可打印”字符 如果您只是使用一些合理的东西,如Java的
(?U)\p{print}
模式属性(或
Character
类中的等效属性),那么您仍然需要做出一些“有趣的”决策

考虑以下每一个代码点:

U+000007 gc=Cc columns=0 print=0 graph=0  ALERT
U+000008 gc=Cc columns=0 print=0 graph=0  BACKSPACE
U+000009 gc=Cc columns=0 print=0 graph=0  CHARACTER TABULATION
U+00000C gc=Cc columns=0 print=0 graph=0  FORM FEED (FF)
U+00000D gc=Cc columns=0 print=0 graph=0  CARRIAGE RETURN (CR)
U+000020 gc=Zs columns=1 print=1 graph=0  SPACE
U+000021 gc=Po columns=1 print=1 graph=1  EXCLAMATION MARK
U+000041 gc=Lu columns=1 print=1 graph=1  LATIN CAPITAL LETTER A
U+000061 gc=Ll columns=1 print=1 graph=1  LATIN SMALL LETTER A
U+000080 gc=Cc columns=0 print=0 graph=0  PADDING CHARACTER
U+000085 gc=Cc columns=0 print=0 graph=0  NEXT LINE (NEL)
U+00008D gc=Cc columns=0 print=0 graph=0  REVERSE LINE FEED
U+0000AB gc=Pi columns=1 print=1 graph=1  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
U+0000AD gc=Cf columns=0 print=1 graph=1  SOFT HYPHEN
U+0002B0 gc=Lm columns=1 print=1 graph=1  MODIFIER LETTER SMALL H
U+0002C6 gc=Lm columns=1 print=1 graph=1  MODIFIER LETTER CIRCUMFLEX ACCENT
U+000302 gc=Mn columns=0 print=1 graph=1  COMBINING CIRCUMFLEX ACCENT
U+00036A gc=Mn columns=0 print=1 graph=1  COMBINING LATIN SMALL LETTER H
U+001100 gc=Lo columns=2 print=1 graph=1  HANGUL CHOSEONG KIYEOK
U+002028 gc=Zl columns=0 print=0 graph=0  LINE SEPARATOR
U+002029 gc=Zp columns=0 print=0 graph=0  PARAGRAPH SEPARATOR
U+00202B gc=Cf columns=0 print=1 graph=1  RIGHT-TO-LEFT EMBEDDING
U+00202F gc=Zs columns=1 print=1 graph=0  NARROW NO-BREAK SPACE
U+002060 gc=Cf columns=0 print=1 graph=1  WORD JOINER
U+002061 gc=Cf columns=0 print=1 graph=1  FUNCTION APPLICATION
U+002062 gc=Cf columns=0 print=1 graph=1  INVISIBLE TIMES
U+002064 gc=Cf columns=0 print=1 graph=1  INVISIBLE PLUS
U+002EC1 gc=So columns=2 print=1 graph=1  CJK RADICAL TIGER
U+002F0B gc=So columns=2 print=1 graph=1  KANGXI RADICAL EIGHT
U+003000 gc=Zs columns=2 print=1 graph=0  IDEOGRAPHIC SPACE
U+003008 gc=Ps columns=2 print=1 graph=1  LEFT ANGLE BRACKET
U+00300A gc=Ps columns=2 print=1 graph=1  LEFT DOUBLE ANGLE BRACKET
U+00300C gc=Ps columns=2 print=1 graph=1  LEFT CORNER BRACKET
U+00302B gc=Mn columns=0 print=1 graph=1  IDEOGRAPHIC RISING TONE MARK
U+003030 gc=Pd columns=2 print=1 graph=1  WAVY DASH
U+003037 gc=So columns=2 print=1 graph=1  IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
U+003041 gc=Lo columns=2 print=1 graph=1  HIRAGANA LETTER SMALL A
U+00E000 gc=Co columns=1 print=1 graph=1 <unnamed codepoint in blk=Private_Use_Area>
U+00F8FF gc=Co columns=1 print=1 graph=1 <unnamed codepoint in blk=Private_Use_Area>
U+00FB1E gc=Mn columns=0 print=1 graph=1  HEBREW POINT JUDEO-SPANISH VARIKA
U+00FE00 gc=Mn columns=0 print=1 graph=1  VARIATION SELECTOR-1
U+00FE23 gc=Mn columns=0 print=1 graph=1  COMBINING DOUBLE TILDE RIGHT HALF
U+00FE58 gc=Pd columns=2 print=1 graph=1  SMALL EM DASH
U+00FE77 gc=Lo columns=1 print=1 graph=1  ARABIC FATHA MEDIAL FORM
U+00FEFF gc=Cf columns=0 print=1 graph=1  ZERO WIDTH NO-BREAK SPACE
U+00FF06 gc=Po columns=2 print=1 graph=1  FULLWIDTH AMPERSAND
U+00FFFA gc=Cf columns=0 print=1 graph=1  INTERLINEAR ANNOTATION SEPARATOR
U+00FFFD gc=So columns=1 print=1 graph=1  REPLACEMENT CHARACTER
U+01B000 gc=Lo columns=2 print=1 graph=1  KATAKANA LETTER ARCHAIC E
U+01D165 gc=Mc columns=1 print=1 graph=1  MUSICAL SYMBOL COMBINING STEM
U+01D167 gc=Mn columns=0 print=1 graph=1  MUSICAL SYMBOL COMBINING TREMOLO-1
U+100002 gc=Co columns=1 print=1 graph=1 <unnamed codepoint in blk=Supplementary_Private_Use_Area-B>
U+000007 gc=Cc列=0打印=0图形=0警报
U+000008 gc=Cc列=0打印=0图形=0退格
U+000009 gc=Cc列=0打印=0图形=0字符制表
U+00000C gc=Cc列=0打印=0图形=0表单馈送(FF)
U+00000D gc=Cc列=0打印=0图形=0回车(CR)
U+000020 gc=Zs列=1打印=1图形=0空间
U+000021 gc=Po列=1打印=1图形=1感叹号
U+000041 gc=Lu列=1打印=1图形=1拉丁文大写字母A
U+000061 gc=Ll columns=1 print=1 graph=1拉丁文小写字母A
U+000080 gc=Cc列=0打印=0图形=0填充字符
U+000085 gc=Cc列=0打印=0图形=0下一行(NEL)
U+00008D gc=Cc列=0打印=0图形=0反向换行
U+0000AB gc=Pi列=1打印=1图形=1左双角度引号
U+0000AD gc=Cf列=0打印=1图形=1软连字符
U+0002B0 gc=Lm列=1打印=1图形=1修饰符字母小写H
U+0002C6 gc=Lm列=1打印=1图形=1修饰符字母扬抑重音
U+000302 gc=Mn列=0打印=1图形=1组合扬抑重音
U+00036A gc=Mn列=0打印=1图形=1组合拉丁文小写字母H
U+001100 gc=Lo列=2打印=1图形=1朝鲜文CHOSEONG KIYEOK
U+002028 gc=Zl列=0打印=0图形=0行分隔符
U+002029 gc=Zp列=0打印=0图形=0段落分隔符
U+0022B gc=Cf列=0打印=1图形=1右向左嵌入
U+00202F gc=Zs列=1打印=1图形=0窄不间断空间
U+002060 gc=Cf columns=0 print=1 graph=1 WORD JOINER
U+002061 gc=Cf列=0打印=1图形=1函数应用
U+002062 gc=Cf列=0打印=1图形=1不可见时间
U+002064 gc=Cf列=0打印=1图形=1不可见加号
U+002EC1 gc=So列=2打印=1图形=1 CJK
U+002F0B gc=So列=2打印=1图形=1康熙八根
U+003000 gc=Zs列=2打印=1图形=0表意空间
U+003008 gc=Ps列=2打印=1图形=1左角括号
U+00300A gc=Ps列=2打印=1图形=1左双角括号
U+00300C gc=Ps列=2打印=1图形=1左角括号
U+00302B gc=Mn列=0打印=1图形=1表意升调标记
U+003030 gc=Pd列=2个打印=1个图形=1个波形破折号
U+003037 gc=So列=2打印=1图形=1表意电报换行分隔符符号
U+003041 gc=Lo列=2打印=1图形=1平假名字母小写A
U+00E000 gc=Co列=1打印=1图形=1
U+00F8FF gc=Co列=1打印=1图形=1
U+00FB1E gc=Mn columns=0 print=1 graph=1 HEBREW POINT JUDEO-SPANISH VARIKA
U+00FE00 gc=Mn列=0打印=1图形=1变化选择器-1
U+00FE23 gc=Mn列=0打印=1图形=1组合双平铺右半部分
U+00FE58 gc=Pd列=2个打印=1个图形=1个小EM破折号
U+00FE77 gc=Lo列=1打印=1