Forgot password?
 Create new account
View 216|Reply 4

pdfTeX中使用C:\Windows\Fonts中的.ttf字體

[Copy link]

3147

Threads

8496

Posts

610K

Credits

Credits
66178
QQ

Show all posts

hbghlyj Posted at 2024-2-8 04:58:47 |Read mode
Verdana font not working下@Ulrike Fischer的回答和@hbghlyj的回答。
新建文件MiKTeX\fonts\enc\dvips\base\winfonts256.enc
$type winfonts256.enc (5.2 KB, Downloads: 37)
將verdana.map和winfonts.map中的對應行改為(這步不建議直接修改pdftex\pdftex.map,因為在MiKTeX刷新font map files時會重新生成pdftex.map)
  1. rjvnr8t Verdana " winfontsT1Encoding ReEncodeFont " <[winfonts256.enc <verdana.ttf
Copy the Code

打開MiKTeX console,刷新file name database
Screenshot 2024-02-07 211342.png
現在pdfLaTeX可以使用Verdana
測試:

  1. \documentclass{article}
  2. \usepackage[T1]{fontenc}
  3. \usepackage{verdana}
  4. \begin{document}
  5. `abcdefghijklmnopqrstuvwxyz'
  6. fi
  7. ()[]\{\}
  8. ``ABCDEFGHIJKLMNOPQRSTUVWXYZ''
  9. @\&
  10. \"A\`a
  11. \end{document}
Copy the Code

或者去掉\usepackage{verdana},用\fontfamily{vna}\selectfont選擇字體
  1. \documentclass{article}
  2. \usepackage[T1]{fontenc}
  3. \begin{document}
  4. \fontfamily{vna}\selectfont
  5. `abcdefghijklmnopqrstuvwxyz'
  6. fi
  7. ()[]\{\}
  8. ``ABCDEFGHIJKLMNOPQRSTUVWXYZ''
  9. @\&
  10. \"A\`a
  11. \end{document}
Copy the Code

3147

Threads

8496

Posts

610K

Credits

Credits
66178
QQ

Show all posts

 Author| hbghlyj Posted at 2024-2-8 05:10:55
同樣的方法,試一下Tahoma
在pdftex.map加入
  1. rjthr8t Tahoma " winfontsT1Encoding ReEncodeFont " <[winfonts256.enc <tahoma.ttf
Copy the Code

\fontfamily{rjt}\selectfont
編譯報錯:
Font shape `T1/rjt/m/n' undefined

我按照mirrors.ctan.org/fonts/verdana/verdana.pdf檢查了afm和tfm文件都有啊(winfonts包含)
如何解決Tahoma不能使用

3147

Threads

8496

Posts

610K

Credits

Credits
66178
QQ

Show all posts

 Author| hbghlyj Posted at 2024-2-8 05:53:34
使用fontinst安裝了t1tahoma.fd到\texmf-local\tex\latex\MyFonts\Tahoma
$type t1tahoma.fd (431 Bytes, Downloads: 42)
然後在MiKTeX console刷新File name database
D:\math\test font>pdflatex 1
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (MiKTeX 22.7.25 NEXT) (preloaded format=pdflatex.fmt)
restricted \write18 enabled.
entering extended mode
(1.tex
LaTeX2e <2022-06-01> patch level 5
L3 programming layer <2022-07-04> (D:\MiKTeX\tex/latex/base\article.cls
Document Class: article 2021/10/04 v1.4n Standard LaTeX document class
(D:\MiKTeX\tex/latex/base\size10.clo)) (D:\MiKTeX\tex/latex/base\fontenc.sty)
(D:\MiKTeX\tex/latex/l3backend\l3backend-pdftex.def) (1.aux)
(D:\MiKTeX\tex/latex/winfonts/tex/latex/winfonts\t1verdana.fd) [1{C:/Users/leno
vo/AppData/Local/MiKTeX/fonts/map/pdftex/pdftex.map}] (1.aux) ){D:/MiKTeX/fonts
/enc/dvips/cm-super/cm-super-t1.enc}Trying to make PK font rjvnr8t at 600 DPI...
The METFAONT mode is: ljfour
Running miktex-makemf.exe...

Sorry, but miktex-makemf did not succeed.

The log file hopefully contains the information to get MiKTeX going again:

  C:\Users\lenovo\AppData\Local\MiKTeX\miktex\log\miktex-makemf.log
Running miktex-ttf2pk.exe...
Running miktex-ttf2pk.exe...
ttf2pk: WARNING: Cannot map character `cwm'.
ttf2pk: WARNING: Cannot map character `dotlessj'.
ttf2pk: WARNING: Cannot map character `ff'.
ttf2pk: WARNING: Cannot map character `ffi'.
ttf2pk: WARNING: Cannot map character `ffl'.
ttf2pk: WARNING: Cannot map character `Ohungarumlaut'.
ttf2pk: WARNING: Cannot map character `Uhungarumlaut'.
ttf2pk: WARNING: Cannot map character `Zdotaccent'.
ttf2pk: WARNING: Cannot map character `Idotaccent'.
ttf2pk: WARNING: Cannot map character `dcroat'.
ttf2pk: WARNING: Cannot map character `ohungarumlaut'.
ttf2pk: WARNING: Cannot map character `uhungarumlaut'.
ttf2pk: WARNING: Cannot map character `zdotaccent'.
ttf2pk: WARNING: Cannot map character `SS'.
Creating rjvnr8t.pk...
Installing C:\Users\lenovo\AppData\Local\MiKTeX\fonts/pk/modeless/microsft/verdana/dpi600\rjvnr8t.pk...
<C:\Users\lenovo\AppData\Local\MiKTeX\font
s/pk/modeless/microsft/verdana/dpi600\rjvnr8t.pk><D:/MiKTeX/fonts/type1/public/
cm-super/sfrm1000.pfb>
Output written on 1.pdf (1 page, 26201 bytes).
Transcript written on 1.log.
package winfonts是用ttf2pk生成PK bitmap fonts,放大会变得模糊失真不如上面的package verdana好。
希望可以用package verdana的方法生成矢量圖字體。

3147

Threads

8496

Posts

610K

Credits

Credits
66178
QQ

Show all posts

 Author| hbghlyj Posted at 2024-2-8 20:19:20
hbghlyj 发表于 2024-2-7 21:53
希望可以用package verdana的方法生成矢量圖字體。

我在這帖28#按照package verdana的方法生成了tahoma的afm和tfm文件。
新建文件MiKTeX\fonts\map\pdftex\ms\tahoma\Tahoma.map,内容為
  1. tahomamn8t Tahoma " winfontsT1Encoding ReEncodeFont " <[T1-WGL4.enc <Tahoma.ttf
Copy the Code

然後在MiKTeX\miktex\config\updmap.cfg加入
  1. # tahoma
  2. Map Tahoma.map
Copy the Code

然後在MiKTeX console刷新File name database和Font map files
現在就可以使用\fontfamily{tahoma}\selectfont放大不會失真。
Screenshot 2024-02-08 122838.png
  1. \documentclass{article}
  2. \usepackage[T1]{fontenc}
  3. \begin{document}
  4. \fontfamily{tahoma}\selectfont
  5. `abcdefghijklmnopqrstuvwxyz'
  6. fi
  7. ()[]\{\}
  8. ``ABCDEFGHIJKLMNOPQRSTUVWXYZ''
  9. @\&
  10. \"A\`a
  11. \end{document}
Copy the Code

运行pdfLaTeX的log有一行warning:
pdfTeX warning: pdflatex (file C:/Users/lenovo/AppData/Local/Microsoft/Windows/
Fonts/Tahoma.ttf): glyph `fi' not found
><D:/MiKTeX/fonts/type1/public/cm-super/sfrm1000.pfb>
Output written on 1.pdf (1 page, 29429 bytes).
pdfTeX 在 Tahoma.ttf 中找不到連字fi所以上圖中fi顯示為方框

3147

Threads

8496

Posts

610K

Credits

Credits
66178
QQ

Show all posts

 Author| hbghlyj Posted at 2024-2-8 21:52:58
hbghlyj 发表于 2024-2-8 12:19
pdfTeX 在 Tahoma.ttf 中找不到連字fi,所以上圖中fi顯示為方框
利用opentype.js或pymupdf的unicode_to_glyph_name(ch)查找對應的glyph name:
  1. import fitz
  2. font=fitz.Font(fontfile=r"C:\Windows\Fonts\tahoma.ttf")
  3. array=["grave","acute","circumflex","tilde","dieresis","hungarumlaut","ring","caron","breve","macron","dotaccent","cedilla","ogonek","quotesinglbase","guilsinglleft","guilsinglright","quotedblleft","quotedblright","quotedblbase","guillemotleft","guillemotright","endash","emdash","compwordmark","perthousandzero","dotlessi","dotlessj","ff","fi","fl","ffi","ffl","visualspace","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","hyphen","Abreve","Aogonek","Cacute","Ccaron","Dcaron","Ecaron","Eogonek","Gbreve","Lacute","Lcaron","Lslash","Nacute","Ncaron","Eng","Odblacute","Racute","Rcaron","Sacute","Scaron","Scedilla","Tcaron","Tcedilla","Udblacute","Uring","Ydieresis","Zacute","Zcaron","Zdot","IJ","Idot","dmacron","section","abreve","aogonek","cacute","ccaron","dcaron","ecaron","eogonek","gbreve","lacute","lcaron","lslash","nacute","ncaron","eng","odblacute","racute","rcaron","sacute","scaron","scedilla","tcaron","tcedilla","udblacute","uring","ydieresis","zacute","zcaron","zdot","ij","exclamdown","questiondown","sterling","Agrave","Aacute","Acircumflex","Atilde","Adieresis","Aring","AE","Ccedilla","Egrave","Eacute","Ecircumflex","Edieresis","Igrave","Iacute","Icircumflex","Idieresis","Eth","Ntilde","Ograve","Oacute","Ocircumflex","Otilde","Odieresis","OE","Oslash","Ugrave","Uacute","Ucircumflex","Udieresis","Yacute","Thorn","Germandbls","agrave","aacute","acircumflex","atilde","adieresis","aring","ae","ccedilla","egrave","eacute","ecircumflex","edieresis","igrave","iacute","icircumflex","idieresis","eth","ntilde","ograve","oacute","ocircumflex","otilde","odieresis","oe","oslash","ugrave","uacute","ucircumflex","udieresis","yacute","thorn","germandbls"]
  4. string=''
  5. for name in array:
  6.     string=string+'/uni{:04X} '.format(font.glyph_name_to_unicode(name))
  7. # Copy to clipboard:
  8. def copy2clip(txt):
  9.      cmd='echo '+txt.strip()+'|clip'
  10.      return subprocess.check_call(cmd, shell=True)
  11. copy2clip(string)
Copy the Code

將Package winfonts包含的fonts\enc\pdftex\T1-WGL4.enc修改為
$type T1-WGL4.enc (6.03 KB, Downloads: 46)
重新运行pdfLaTeX,所有字符就都正確了:
Screenshot 2024-02-08 140048.png

手机版Mobile version|Leisure Math Forum

2025-4-21 01:19 GMT+8

Powered by Discuz!

× Quick Reply To Top Return to the list