Font.getNumGlyphs()
实际返回的数字代表什么?
该文档。州:
返回this中的字形数量
Font
。此Font
范围的字形代码从0
到getNumGlyphs() - 1
。
我认为它代表0之间的代码点的数量Character.MAX_CODE_POINT
为其Font.canDisplay(codePoint)
返回true
。但是下面的代码输出表明不是这样。
注意:在这里,要通过countGlyphs
超过100 万个代码点(该方法)处理200多种字体,则需要30秒钟左右。运行时请耐心等待。
import java.awt.*;
import java.util.Date;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
class FontGlyphCheck {
public static int countGlyphs(Font f) {
int count = 0;
for (int ii = 0; ii < Character.MAX_CODE_POINT; ii++) {
if (f.canDisplay(ii)) {
count++;
}
}
return count;
}
public static void main(String[] args) {
System.out.println(new Date());
GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] fontNameArray = ge.getAvailableFontFamilyNames();
final String[] names = {"Name", "Number Glyphs", "Count Glyphs"};
final Object[][] values =
new Object[fontNameArray.length][names.length];
for (int ii = 0; ii < fontNameArray.length; ii++) {
Font f = new Font(fontNameArray[ii], Font.PLAIN, 16);
values[ii][0] = fontNameArray[ii];
values[ii][1] = new Integer(f.getNumGlyphs());
values[ii][2] = new Integer(countGlyphs(f));
}
System.out.println(new Date());
Runnable r = new Runnable() {
@Override
public void run() {
JPanel gui = new JPanel(new BorderLayout());
DefaultTableModel dtm = new DefaultTableModel(values, names) {
@Override
public Class<?> getColumnClass(int columnIndex) {
if (columnIndex == 0) {
return String.class;
}
return Integer.class;
}
};
JTable table = new JTable(dtm);
table.setAutoCreateRowSorter(true);
gui.add(new JScrollPane(table));
JOptionPane.showMessageDialog(null, gui);
}
};
// Swing GUIs should be created and updated on the EDT
// http://docs.oracle.com/javase/tutorial/uiswing/concurrency
SwingUtilities.invokeLater(r);
}
}
此输出来自基于Windows
7的PC。GUI表中显示的第一列已拖到最后一列(以实现更好的列对齐),并且行按getNumGlyphs()
值(输出的第一列)以升序排序。
16 33 MS Outlook
41 59 Marlett
46 64 MT Extra
116 131 Bookshelf Symbol 7
192 208 Symbol
204 256 Algerian
208 286 Castellar
211 228 Wingdings 3
220 237 Wingdings 2
226 243 Wingdings
227 243 Webdings
230 250 Elephant
231 190 MS Reference Specialty
232 282 Stencil
241 258 Onyx
242 254 Narkisim
242 254 Miriam
242 254 Levenim MT
242 254 Aharoni
242 261 Modern No. 20
242 261 Footlight MT Light
243 254 Miriam Fixed
243 254 FrankRuehl
243 254 David
243 260 Lucida Handwriting
243 260 Lucida Fax
243 260 Lucida Calligraphy
243 261 Rockwell Extra Bold
243 261 Rockwell
243 261 Palace Script MT
243 261 Gloucester MT Extra Condensed
243 261 Colonna MT
243 261 Centaur
243 261 Brush Script MT
243 261 Broadway
243 261 Bell MT
243 261 Arial Rounded MT Bold
244 256 Rod
244 261 Perpetua Titling MT
244 261 Matura MT Script Capitals
244 261 Imprint MT Shadow
244 261 Engravers MT
244 261 Blackadder ITC
244 261 Bernard MT Condensed
244 262 Poor Richard
244 265 Old English Text MT
244 267 Edwardian Script ITC
245 261 Chiller
245 261 Calisto MT
246 262 Freestyle Script
247 266 Pristina
248 257 Harrington
248 270 Jokerman
249 268 Forte
249 273 Goudy Stout
249 275 Kristen ITC
250 267 Vladimir Script
250 267 Rage Italic
250 267 Kunstler Script
250 267 Eras Medium ITC
250 267 Eras Light ITC
250 267 Eras Demi ITC
250 267 Eras Bold ITC
250 268 Perpetua
251 268 OCR A Extended
251 268 Bodoni MT
251 269 Viner Hand ITC
251 269 Tempus Sans ITC
251 269 Script MT Bold
251 269 Rockwell Condensed
251 269 French Script MT
251 269 Felix Titling
251 269 Curlz MT
251 269 Bradley Hand ITC
252 259 Wide Latin
252 260 Britannic Bold
252 261 Cooper Black
252 268 Bodoni MT Condensed
252 268 Bodoni MT Black
253 261 Copperplate Gothic Light
253 261 Copperplate Gothic Bold
253 268 Gigi
255 262 Parchment
255 262 Papyrus
258 260 Playbill
260 278 Maiandra GD
261 277 Snap ITC
261 277 Juice ITC
261 279 Bodoni MT Poster Compressed
269 261 Baskerville Old Face
269 274 Showcard Gothic
270 260 Vivaldi
270 260 Harlow Solid Italic
270 260 Bauhaus 93
270 261 Goudy Old Style
274 274 Ravie
275 279 Informal Roman
291 274 Magneto
295 315 Gill Sans Ultra Bold
296 315 Gill Sans MT Condensed
297 314 Tw Cen MT Condensed Extra Bold
297 314 Tw Cen MT Condensed
297 314 Tw Cen MT
297 314 Gill Sans Ultra Bold Condensed
297 315 Gill Sans MT Ext Condensed Bold
298 274 Agency FB
300 303 MV Boli
300 315 Gill Sans MT
308 321 Microsoft Tai Le
311 326 Plantagenet Cherokee
317 338 Lao UI
343 350 Microsoft New Tai Lue
350 358 Leelawadee
362 333 LilyUPC
362 333 KodchiangUPC
362 333 JasmineUPC
362 333 IrisUPC
362 333 FreesiaUPC
362 333 EucrosiaUPC
362 333 DilleniaUPC
362 333 CordiaUPC
362 333 Cordia New
362 333 BrowalliaUPC
362 333 Browallia New
362 333 AngsanaUPC
362 333 Angsana New
363 275 Berlin Sans FB
364 274 Berlin Sans FB Demi
381 274 Californian FB
385 274 High Tower Text
395 402 Gisha
397 274 Niagara Solid
397 274 Niagara Engraved
422 321 Vijaya
433 317 Latha
450 370 Estrangelo Edessa
459 326 Raavi
463 348 Kartika
473 484 Simplified Arabic
474 482 Simplified Arabic Fixed
490 402 DokChampa
518 507 Andalus
581 595 Trebuchet MS
587 602 Comic Sans MS
589 574 Traditional Arabic
592 339 Tunga
596 614 Georgia
633 337 Kalinga
634 382 DaunPenh
654 676 Haettenschweiler
660 677 Franklin Gothic Heavy
660 678 Franklin Gothic Book
663 672 Garamond
663 676 Arial Narrow
663 678 Franklin Gothic Medium Cond
663 678 Franklin Gothic Demi Cond
663 681 Franklin Gothic Demi
665 677 Franklin Gothic Medium
666 676 Mistral
666 677 Impact
666 688 Century Gothic
667 664 Lucida Console
669 690 Monotype Corsiva
669 691 Century Schoolbook
669 691 Bookman Old Style
669 691 Book Antiqua
670 406 MoolBoran
670 692 Century
674 680 Arial Black
675 391 Khmer UI
690 687 Segoe Print
706 358 Utsaah
706 358 Kokila
706 358 Aparajita
734 732 Sylfaen
796 724 Gentium Book Basic
796 724 Gentium Basic
816 333 Vrinda
826 352 Iskoola Pota
847 337 Shonar Bangla
864 353 Vani
865 879 Euphemia
872 348 Gautami
885 357 Mangal
951 794 Verdana
1014 1029 OpenSymbol
1028 902 Nyala
1043 709 Microsoft Uighur
1180 780 Candara
1193 1190 MS Reference Sans Serif
1201 780 Corbel
1204 779 Constantia
1326 613 Microsoft PhagsPa
1328 1083 Palatino Linotype
1376 1391 Lucida Sans Typewriter
1402 1415 Lucida Bright
1482 456 Microsoft Himalaya
1484 1286 Ebrima
1491 340 Shruti
1565 1553 Microsoft Yi Baiti
1779 1762 Lucida Sans Unicode
1824 420 Mongolian Baiti
1915 1876 DejaVu Sans Light
1940 627 Segoe Script
2261 989 Sakkal Majalla
2380 2139 Segoe UI Semibold
2380 2139 Segoe UI Light
2584 2307 Arimo
2731 2230 Consolas
2901 2668 Segoe UI
2929 2391 Lucida Sans
2962 1138 Arabic Typesetting
3077 2826 Microsoft Sans Serif
3248 2862 Courier New
3248 87256 Monospaced
3248 87256 DialogInput
3289 3257 DejaVu Sans Mono
3399 3357 DejaVu Serif Condensed
3399 3357 DejaVu Serif
3414 2905 Tahoma
3415 2817 Times New Roman
3415 87191 Serif
3417 2821 Arial
3417 87193 SansSerif
3417 87193 Dialog
3878 2176 Calibri
3983 2176 Calibri Light
3987 3752 Segoe UI Symbol
4517 902 Gabriola
5928 5636 DejaVu Sans Condensed
5928 5636 DejaVu Sans
6991 3240 Cambria
6991 4362 Cambria Math
12747 12639 Malgun Gothic
19321 16059 MS PMincho
19321 16059 MS Mincho
22134 22202 DFKai-SB
22213 16059 MS UI Gothic
22213 16059 MS PGothic
22213 16059 MS Gothic
23942 16946 Meiryo UI
23942 16946 Meiryo
28562 28542 SimHei
28562 28542 KaiTi
28562 28542 FangSong
28762 28735 SimSun
28762 28735 NSimSun
29220 28977 Microsoft JhengHei
29354 29095 Microsoft YaHei
34046 28991 PMingLiU
34046 28991 MingLiU
34046 33877 MingLiU_HKSCS
39680 20626 GungsuhChe
39680 20626 Gungsuh
39680 20626 BatangChe
39680 20626 Batang
40194 20626 GulimChe
40194 20626 Gulim
40194 20626 DotumChe
40194 20626 Dotum
42809 42827 SimSun-ExtB
44875 42953 PMingLiU-ExtB
44875 42953 MingLiU-ExtB
44875 42953 MingLiU_HKSCS-ExtB
50377 38933 Arial Unicode MS
Font
其中的两个值相同,那么我还没有注意到。canDisplay
方法返回的值的10%以内),但有些却截然不同。<face-palm />
就在文档顶部。为Font
..
字符和字形
字符是一种符号,以抽象的方式表示诸如字母,数字或标点符号之类的项。例如,“拉丁小写字母G”“ g”是一个字符。
字形是用于呈现字符或字符序列的形状。在简单的书写系统(例如拉丁语)中,通常一个字形代表一个字符。但是,一般而言,
字符和字形没有一对一的对应关系。
例如,字符“á”带小号的拉丁文小写字母A可以由两个字形表示:一个字形代表“
a”,一个字形代表“´”。另一方面,两个字符的字符串“ fi”可以用一个字形表示,即“
fi”连字。在复杂的书写系统(例如阿拉伯文或南亚和东南亚书写系统)中,字符和字形之间的关系可能更加复杂,并且涉及到上下文相关的字形选择以及字形重新排序。字体封装了呈现一组选定字符所需的字形集合以及将字符序列映射到相应字形序列所需的表。
好吧,您每天都会学到一些新东西。那是我的“每日学习项目”。
问题内容: 我正在使用Postgresql 8.3,并具有以下简单功能,该功能会将a返回 给客户端 现在,我可以使用以下SQL命令来调用此函数并操纵返回的游标,但是游标名称是由PostgreSQL自动生成的 此外,如38.7.3.5中所述,显式地将游标名称声明为函数的输入参数 。返回游标。我可以声明自己的游标名称并使用此游标名称来操纵返回的游标,而不是为我自动生成的Postgresql吗?如果不是
我必须编写一个程序,其中方法返回读取的正数之和,并将从用户那里读取输入,直到输入零。 到目前为止,我没有计算正数的总和,我需要一些帮助,请。 以下是我目前掌握的情况: (请注意,您得到了扫描程序,不要使用system.in)-从用户读取,直到给定0,并返回读取的正数的和。 示例: ♦用户输入:0=>返回0 ♦用户输入1 2 3 0=>返回6(1+2+3) ♦用户输入1-2 3 0=>返回6(1+3
函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。 我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的: def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax 但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?可以不返回
函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。 我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的: def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax 但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?可以不返回
我正在等待(从USSD请求中)检索一个值,以便返回它(getUSSD):
如您所见,它将参数和的和保存在变量中,然后将包含它们的和的eax寄存器保存在变量中,就像函数返回值一样。 这样做是因为函数是用返回值定义的吗?