找回密码
 快速注册
搜索
查看: 160|回复: 42

请教能不能单独对某些字用别的字体?

[复制链接]

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

abababa 发表于 2023-8-29 21:02 |阅读模式
如题。我打一个书里有些生僻字,是目前字体里没有的,比如“𰏀”字,不知道这里能不能显示出来,但我的字体里没有。
现在我想让其它文字都用原来的字体,然后单独对这些字体里没有的字用另一种字体,请问这个要怎么做?

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2023-8-29 21:06
Changing default font typeface
The font can also be changed for a specific element in the document.
  1. \documentclass{article}
  2. \usepackage[T1]{fontenc}
  3. \usepackage{tgbonum}
  4. \begin{document}
  5. This document is a sample document to
  6. test font families and font typefaces.
  7. {\fontfamily{qcr}\selectfont
  8. This text uses a different font typeface
  9. }
  10. \end{document}
复制代码

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2023-8-29 21:07
本帖最后由 hbghlyj 于 2023-8-29 23:43 编辑
abababa 发表于 2023-8-29 21:02
比如“𰏀”字,不知道这里能不能显示出来,但我的字体 ...

glyphwiki
unicode官网U30000第13页
U+303C0
十进制197568
Screenshot 2023-08-29 at 23-25-03 The Unicode Standard Version 15.0 - U30000.pdf.png
编码为GZ-0591101
GZ表示这个字出自“古壮字字典”
unicode kIRG_GSource
                        GZ Ancient Zhuang Character Dictionary, (古壮字字典) 1989, ISBN 7-5363-0614-8
zh.wiktionary.org
Cangjie
Unihan
303C0.png

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2023-8-29 21:08

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2023-8-29 21:09
先在导言区声明一个包含生僻字的字体 \newCJKfontfamily\spz{字体名}
然后正文里用 {\spz 那个生僻字} 即可。

===================

实测后发现并没那么简单,好像还得看这字生僻到什么程度(字在哪个区……

一般的生僻字用上面的就行,但你要打的这个字 U+303C0 可能是太生僻了,在 G 区,xeCJK 似乎没有把它们归类为 CJK 字符?(或许新的 texlive 版本会有改进)

那还得先加一个 \xeCJKsetcharclass{"30000}{"3134A}{1} 再用上面的方法,好像可以。

在 7# 某个链接里下载包含且仅包含 G 区字形的字体文件:zhs.glyphwiki.org/font/gw2696945.ttf

然后用以下代码测试:
  1. \documentclass[UTF8]{ctexart}
  2. \xeCJKsetcharclass{"30000}{"3134A}{1}
  3. \newCJKfontfamily\spzG{gw2696945.ttf}
  4. \begin{document}
  5. 正常字体 vs{\spzG 𰏀\symbol{"303C0}\symbol{197568}}看看
  6. \end{document}
复制代码

能看到三个那个字就是没问题(第一个是直接复制粘贴,第二三是用 unicode 编码输入(16 进制与 10 进制

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2023-8-29 21:11
本帖最后由 hbghlyj 于 2023-8-29 23:30 编辑 也可以用TikZ绘制汉字

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2023-8-29 23:37
本帖最后由 hbghlyj 于 2023-8-30 00:29 编辑 支援大字集的字型的列表查到支援G区的字体有:
天珩全字库一點明體BabelStone Han思源黑体完整版、遍黑体苹方

How to display CJK Extension G?


在Windows中Private Character Editor是用于创建和编辑字符的工具。
用户最多可以创建6400个独特的字符(包括商标和特殊字符)在字体库中使用
private-character-editor.png
运行eudcedit以打开 open-private-character-editor-by-run.png
或通过控制面板打开 open-private-character-editor-in-control-panel.png
绘制64 x 64像素的字符
然后可在“字符映射表”中查看
characters-715677.jpg

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2023-8-29 23:39
本帖最后由 hbghlyj 于 2023-8-30 07:05 编辑 历史上,壮族曾利用汉字及汉字的偏旁、部首,按照汉字六书的规律,创造出用来记录壮语的方块壮字。今天又称“古壮字”。在壮语中称为Sawndip,古壮字写作「𭨡𮄫」,意为“生字”或“不成熟的文字”。方块壮字没有形成统一的书写规范,异体字多,始终未成为正式通行的文字。学习方块壮字的前提是掌握汉字,亦不利于推广。
  • 新壮文,1982年修订的拼音壮文。
  • 老壮文,1955年使用拉丁字母创制的拼音壮文。
  • 方块壮字,1955年以前利用汉字部件并模仿汉字构字方式创造的壮文。
https://zh.wikipedia.org/wiki/标准壮语
壮语维基百科za.wikipedia.org/
壮语是壮族使用的壮傣语族语言。大多数母语者居住在中华人民共和国广西壮族自治区。据估计,二〇〇六年有一千四百万壮语使用者,使其成为中国领土上人口第二多的语言和世界第六十五种语言。
Sawndip Sawdenj《古壮字字典》1989 第59页
读音:同“餐”
意思:一阵子;一下子
例句:佲𨅸𭆸~𬺴。
Mwngz daengj gou can ndeu.
翻译:你等我一下子。
Screenshot 2023-08-29 at 23-54-45 coll. - 古壮字字典. Sawndip Sawloih-广西民族出.png

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2023-8-30 12:29
kuing 发表于 2023-8-29 21:09
先在导言区声明一个包含生僻字的字体 \newCJKfontfamily\spz{字体名}
然后正文里用 {\spz 那个生僻字} 即可 ...

直接用前两行就好用。我用的是天珩字体,就是7楼里说的第一个字体。

这些生僻字虽然也都能显示出来,但是都感觉不太好看。我以前看过一个unicode提供的文件,里面所有汉字都是用像宋体那种字体印出来的,开始还以为是图片,感觉那个里面的字体应该挺好看的。

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2023-8-30 13:52
abababa 发表于 2023-8-30 12:29
直接用前两行就好用。我用的是天珩字体,就是7楼里说的第一个字体。

这些生僻字虽然也都能显示出来,但 ...

噢?可以发一下代码吗?

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2023-8-30 14:43
kuing 发表于 2023-8-30 13:52
噢?可以发一下代码吗?

  1. \documentclass[a4paper]{book}
  2. \usepackage{xltxtra,fontspec,xunicode}
  3. \usepackage[slantfont,boldfont]{xeCJK}
  4. % 公式中直接使用中文,不用加\text{}
  5. \xeCJKsetup{CJKmath=true}
  6. \punctstyle{kaiming}
  7. \usepackage{lipsum}
  8. \setCJKmainfont{WenQuanYi Micro Hei}
  9. \setCJKmonofont{WenQuanYi Micro Hei Mono}
  10. \setmainfont{Latin Modern Roman}
  11. \setmonofont{DejaVu Sans Mono}
  12. \setsansfont{DejaVu Sans}
  13. \XeTeXlinebreaklocale "zh"
  14. \XeTeXlinebreakskip = 0pt plus 1pt
  15. \usepackage{indentfirst}
  16. \setlength{\parindent}{2em}
  17. \usepackage[top=0.5in,bottom=0.5in,left=0.5in,right=0.5in]{geometry}
  18. %手机页面
  19. % \geometry{paperwidth=6cm, paperheight=11cm, width=5.0cm, height=9.5cm, left=0.5cm, right=0.5cm}
  20. \usepackage[small,center,pagestyles]{titlesec}
  21. \titleformat{\chapter}[hang]{\Large\bfseries}{\chaptername}{1em}{}
  22. \renewcommand{\chaptername}{}
  23. %section 不加编号
  24. \setcounter{secnumdepth}{0}
  25. \renewcommand{\contentsname}{目录}
  26. \usepackage[pdfencoding=auto,psdextra,colorlinks,linkcolor=red,anchorcolor=blue,citecolor=blue]{hyperref}
  27. \newCJKfontfamily\spz{TH-Tshyn-P1}
  28. \begin{document}
  29. \frontmatter
  30. \tableofcontents
  31. \addcontentsline{toc}{section}{目录}
  32. \mainmatter
  33. 有橐驼一,{\spz 𰏀}腹跪足,儑耳齝口。
  34. \end{document}
复制代码


然后用xelatex编译,就生成了。中间的内容简略了,只保留了生僻字的部分。
只是生僻字没那么好看,一眼就看出不一样:
234.gif

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2023-8-30 14:59
abababa 发表于 2023-8-30 12:29
我以前看过一个unicode提供的文件,里面所有汉字都是用像宋体那种字体印出来的,开始还以为是图片,感觉那个里面的字体应该挺好看的。


是不是指这个文件?第13页有U+303C0

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2023-8-30 15:23
abababa 发表于 2023-8-30 14:43
然后用xelatex编译,就生成了。中间的内容简略了,只保留了生僻字的部分。
只是生僻字没那么好看,一眼 ...


我这里还是出不来,得加 \xeCJKsetcharclass{"30000}{"3134A}{1} 才行。

查了一下我电脑上的 xecjk 文档与网上最新的文档,果然如我昨晚的猜想那样,是我这里的版本旧(texlive2020),没有把“扩展 G”归类为 CJK 类,而新版就设好了,所以直接能出来。
mirrors.hit.edu.cn/CTAN/macros/xetex/latex/xecjk/xeCJK.pdf#page.29 第 29 页最后一行里有:
• CJK Unified Ideographs Extension-G(中日韩统一表意文字扩展 G)
"30000 -> "3134F

而我本地的 xeCJK.pdf 里就没有这一句。

所以你的 texlive 版本一定比我的新。

----------
至于你说“生僻字没那么好看,一眼就看出不一样”,那是因为你正文用了黑体,而那生僻字字体是宋体,当然不一样了。
如果你正文改用宋体,比如 \setCJKmainfont{SimSun},那就不会不一样了:
微信截图_20230830153917.png

或者你也可以去找找有没有黑体的生僻字字体,但我还没见过。

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2023-8-30 16:47
hbghlyj 发表于 2023-8-30 14:59
是不是指这个文件?第13页有U+303C0

不是,我看到的那个是表格形式的,虽然也有前面那些英文的说明性文本,但是到了汉字部分,就是列是4E,4F,50……,然后行是00到FF,全是这样排列的,那个字体就很好看,而且当时我的电脑上肯定没有扩展AB区的字体,但那个pdf里就能显示出来,当时我就想把那个字体弄出来,可惜不会弄,后来下载到支持扩展区的字体了,pdf文件也删除了。

413

主题

1558

回帖

1万

积分

积分
11498

显示全部楼层

 楼主| abababa 发表于 2023-8-30 16:52
kuing 发表于 2023-8-30 15:23
我这里还是出不来,得加 \xeCJKsetcharclass{"30000}{"3134A}{1} 才行。

查了一下我电脑上的 xecjk 文档 ...


是的,我的texlive是今年新安装的,就是那个自动从网上下载然后安装的程序,安装就花了4个多小时。

即使是宋体,仍然能看出区别来,这个字的笔画看着比其它的要粗一些。而在记事本里直接选择字体为TH-Tshyn-P1,看着就像下图里一样:
234.gif

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2023-8-30 17:11
abababa 发表于 2023-8-30 16:47
不是,我看到的那个是表格形式的,虽然也有前面那些英文的说明性文本,但是到了汉字部分,就是列是4E,4F, ...

这里是否可以找到?

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2023-8-30 17:19
abababa 发表于 2023-8-30 16:52
是的,我的texlive是今年新安装的,就是那个自动从网上下载然后安装的程序,安装就花了4个多小时。

即使 ...

线条粗细差异那是字体设计者的设计理念不同。
你要看起来完全一样也只能继续找其他字体来尝试,我也不知道还有哪些字体支持到扩展 G 区。
至于在记事本上的大小不同,我也不了解。

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2023-8-30 17:23
本帖最后由 hbghlyj 于 2023-8-30 17:46 编辑 可以找一个“山”偏旁的字和“餐”偏旁的字,如7#在Windows中用Private Character Editor剪贴到一起,就可以在记事本中使用,大小符合要求。
Windows 10 內建「造字程式」,打不出來的字就自己建一個吧

例如在这个教程中,把“山”偏旁和“含”偏旁合在一起。

点评

还能这样玩吗😆  发表于 2023-8-30 17:39

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2023-8-30 17:38
abababa 发表于 2023-8-30 16:47
不是,我看到的那个是表格形式的,虽然也有前面那些英文的说明性文本,但是到了汉字部分,就是列是4E,4F, ...

当时你是为了啥而看那个PDF呢?能想起来吗
还有你还记得当时那字体是宋体还是别的字体?有衬线还是无衬线?

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2023-8-30 17:48
本帖最后由 hbghlyj 于 2023-8-30 18:04 编辑 U30000.pdf第13页提取出BBEGEF+UCS_G_ExtGv1.ttf(见这帖
insert_font插入1.12M的字体,得到1.13M的PDF
  1. import fitz
  2. doc = fitz.open()
  3. page = doc.new_page(width=612,height=792)
  4. page.insert_font(fontname="TT9", fontfile="BBEGEF+UCS_G_ExtGv1.ttf")
  5. page.insert_text((0,0),"abababa",fontname="helv",fontsize = 1)
  6. doc.update_stream(page.get_contents()[0],b"/TT9 1 Tf\n21 0 0 21 111.24 691.62 Tm\n<07d4>Tj")
  7. doc.save("cjktest.pdf")
复制代码

Adobe在线PDF压缩工具得到: $type cjktest-compressed.pdf (801.98 KB, 下载次数: 9)
效果:从U30000.pdf第13页提取出单个字,和原PDF的字体、字号、位置都一样

点评

虽然看不懂,但好像很腻害的样子😃😃😃  发表于 2023-8-30 17:56
只含一个字的PDF为什么会800k这么大呢?  发表于 2023-8-30 19:02

手机版|悠闲数学娱乐论坛(第3版)

GMT+8, 2025-3-4 12:32

Powered by Discuz!

× 快速回复 返回顶部 返回列表