精华内容
下载资源
问答
  • 解析字体包
    万次阅读 热门讨论
    2018-08-15 12:04:17

    Adobe Acrobat Reader DC缺少字体包的问题

    针对部分发票或特殊PDF文件打开时提示缺少字体包的问题,提供以下解决方案。
    软件名称:FontPack1500720033_XtdAlf_Lang_DC.msi
    该软件可直接在操作系统下运行,完成安装后即可成功解决缺少字体包的错误提示。
    注:
    下方提供的链接地址只针对20044版本,其它未测试。
    链接: https://pan.baidu.com/s/1jAC_wu8BehlaZAGRrFmMsQ 提取码: g2b5
    这里写图片描述

    更多相关内容
  • TextView加载字体包 在 Android 中,若需要使得某个TextView加载字体包,使用以下方式即可: Typeface typeFace =Typeface.createFromAsset(getAssets(),fonts/Bold.otf); textView.setTypeface(typeFace); 至于...
  • Adobe多种字体的集合,适用于读取PDF时字体无法识别或出现乱码,以及pdfbox、Android
  • 之前上传了一个字体压缩包,里面全是.ttf格式的字体包,现在再上传几个.otf格式的字体包:GT-Walsheim-Bold,GT-Walsheim-Light,GT-Walsheim-Medium,GT-Walsheim-Regular,Primer-Icon-Regular
  • 今天小编就为大家分享一篇解决在vue项目中webpack打包后字体不生效的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 各种工具用于字体解析器,整形引擎和子集的示例工具 是一个字体解析器,整形引擎以及完全用Rust编写的OpenType,WOFF和WOFF2的子集。 该存储库包含开发用于调试和测试Allsorts的工具,并提供其用法示例。 注意:这些...
  • 福利来了 -- 压缩字体包工具

    千次阅读 2018-11-15 14:34:03
    网上关于压缩字体包的工具和教程都太麻烦了,使用gulp-font-spider还有一大堆设置,今天分享一个压缩字体包的工具,自己写的python脚本,配合sfnttool.jar包做字体压缩。很简单的。 1、先来解析一下代码,谁想拿去用...

    网上关于压缩字体包的工具和教程都太麻烦了,使用gulp-font-spider还有一大堆设置,今天分享一个压缩字体包的工具,自己写的python脚本,配合sfnttool.jar包做字体压缩。很简单的。
    1、先来解析一下代码,谁想拿去用的自己根据提示改一下代码就可以了。

    #!/usr/bin/env python3
    # -*- coding: UTF-8 -*-
    import os
    import codecs
    import argparse
    import sys
    reload(sys)
    sys.setdefaultencoding('utf8')
    # 读取文件里使用到的字体
    def readFile(path): 
        fd = open(path)
        line = fd.readline()
        string = ""
        while line:
            s = line.find(':')
            e = line.find(',')
            if s != -1: 
                if e == -1: 
                    e = len(line)
                sub = line[s + 1:e]
                chinaCode = sub.encode('utf8').decode('unicode_escape')
                for char in chinaCode: 
                    if (string.find(char) == -1 and char != '"' and char != ' '):
                        string = string + char
            line = fd.readline()
        fd.close()
        return string
    
    # 添加英文字和特殊字符
    def addChar(string): 
        string = string + "1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM:,./?%"
        return string
    
    # 导出字体命令
    def exportFont(string, originFont, outFont):
        cmdStr = 'java -jar sfnttool.jar -s "%s" %s %s' % (string, originFont, outFont)
        os.system(cmdStr)
        print("export " + outFont + " font complete")
    
    # 将原路径下的所有字体全部压缩成新字体
    def run(filePaths, originPath, outPath):
        string = ""
        for filePath in filePaths:
            string = string + readFile(filePath)
        string = addChar(string)
        fonts = os.listdir(originPath)
        for font in fonts: 
            if(font.find('.ttf') != -1 or font.find('.OTF') != -1):
                # 字体
                print(font)
                oldFont = os.path.join(originPath, font)
                outFont = os.path.join(outPath, font)
                exportFont(string, oldFont, outFont)
    
    if __name__=='__main__':
        filePathCn = "../../../game/resource/assets/config/zhcnTxt.json"		#这里是你想获取的原字的文件地址,填写你自己的文件地址就可以了
        # filePathTw = "../../../game/resource/assets/config/zhtwTxt.json"
        filePaths = [filePathCn]    # 这里是可以做多个文件同时更换
        originPath = "./origin_fonts"    #这里存放的是你想压缩的原字体库文件夹
        outPath = "./output_fonts"    #这里是你想转换后的文件路径
        run(filePaths, originPath, outPath)
    

    看着上面的注释,将对应的地方改过来,就可以了。

    上面是代码,你拷过去的时候一定要注意python的格式对不对,在sublime中打开,每行前面是…这种就是对的,是——就是格式有问题,你直接在前面打空格就可以了
    在这里插入图片描述

    2、在终端中执行python exportFont.py就可以了
    使用示例和demo我已经放到资源了,自己去下就好了,使用不明白的直接问。

    展开全文
  • stb_truetype是一个常见字体加载库, 只有一个头文件, 功能虽没有freetype库强大,但代码量小很多,在Flash非常小的开发板上也可以用,觉得freetype库太大的,建议使用stb_truetype库。stb库的GitHub仓库:...

    一、前言

    这段时间的工作需要研究stb_truetype库,因此本篇文章记录一下该库的基本用法。stb_truetype是一个常见字体加载库, 只有一个头文件, 功能虽没有freetype库强大,但代码量小很多,在Flash非常小的开发板上也可以用,觉得freetype库太大的,建议使用stb_truetype库。

    stb库的GitHub仓库:https://github.com/nothings/stb。

    二、stb_truetype解析ttf字体

    使用stb_truetype库解析ttf字体的步骤通常如下:

    1、加载并初始化ttf字体文件;

    2、设置字体大小(字号)并计算缩放比例;

    3、获取垂直方向上的度量并根据缩放比例调整,比如字高、行间距等;

    4、获取水平方向上的度量,比如字宽、字间距等;

    5、获取字符图片的边框(每个字符转化为图像的边界);

    6、调整每个字体图像的宽高(代码中的x、y),并渲染字体;

    至此,解析ttf字体已完成,附加步骤为使用stb_image_write库将渲染出来的图像保存为本地图片,下面直接上代码:

    注意:在包含stb_truetype.h头文件的时候需要定义STB_TRUETYPE_IMPLEMENTATION,否则将会无法使用。

    #include

    #include

    #define STB_IMAGE_WRITE_IMPLEMENTATION

    #include "stb_image_write.h" /* http://nothings.org/stb/stb_image_write.h */

    #define STB_TRUETYPE_IMPLEMENTATION

    #include "stb_truetype.h" /* http://nothings.org/stb/stb_truetype.h */

    int main(int argc, const char *argv[])

    {

    /* 加载字体(.ttf)文件 */

    long int size = 0;

    unsigned char *fontBuffer = NULL;

    FILE *fontFile = fopen("font/default.ttf", "rb");

    if (fontFile == NULL)

    {

    printf("Can not open font file!\n");

    return 0;

    }

    fseek(fontFile, 0, SEEK_END); /* 设置文件指针到文件尾,基于文件尾偏移0字节 */

    size = ftell(fontFile); /* 获取文件大小(文件尾 - 文件头 单位:字节) */

    fseek(fontFile, 0, SEEK_SET); /* 重新设置文件指针到文件头 */

    fontBuffer = calloc(size, sizeof(unsigned char));

    fread(fontBuffer, size, 1, fontFile);

    fclose(fontFile);

    /* 初始化字体 */

    stbtt_fontinfo info;

    if (!stbtt_InitFont(&info, fontBuffer, 0))

    {

    printf("stb init font failed\n");

    }

    /* 创建位图 */

    int bitmap_w = 512; /* 位图的宽 */

    int bitmap_h = 128; /* 位图的高 */

    unsigned char *bitmap = calloc(bitmap_w * bitmap_h, sizeof(unsigned char));

    /* "STB"的 unicode 编码 */

    char word[20] = {0x53, 0x54, 0x42};

    /* 计算字体缩放 */

    float pixels = 64.0; /* 字体大小(字号) */

    float scale = stbtt_ScaleForPixelHeight(&info, pixels); /* scale = pixels / (ascent - descent) */

    /**

    * 获取垂直方向上的度量

    * ascent:字体从基线到顶部的高度;

    * descent:基线到底部的高度,通常为负值;

    * lineGap:两个字体之间的间距;

    * 行间距为:ascent - descent + lineGap。

    */

    int ascent = 0;

    int descent = 0;

    int lineGap = 0;

    stbtt_GetFontVMetrics(&info, &ascent, &descent, &lineGap);

    /* 根据缩放调整字高 */

    ascent = roundf(ascent * scale);

    descent = roundf(descent * scale);

    int x = 0; /*位图的x*/

    /* 循环加载word中每个字符 */

    for (int i = 0; i < strlen(word); ++i)

    {

    /**

    * 获取水平方向上的度量

    * advanceWidth:字宽;

    * leftSideBearing:左侧位置;

    */

    int advanceWidth = 0;

    int leftSideBearing = 0;

    stbtt_GetCodepointHMetrics(&info, word[i], &advanceWidth, &leftSideBearing);

    /* 获取字符的边框(边界) */

    int c_x1, c_y1, c_x2, c_y2;

    stbtt_GetCodepointBitmapBox(&info, word[i], scale, scale, &c_x1, &c_y1, &c_x2, &c_y2);

    /* 计算位图的y (不同字符的高度不同) */

    int y = ascent + c_y1;

    /* 渲染字符 */

    int byteOffset = x + roundf(leftSideBearing * scale) + (y * bitmap_w);

    stbtt_MakeCodepointBitmap(&info, bitmap + byteOffset, c_x2 - c_x1, c_y2 - c_y1, bitmap_w, scale, scale, word[i]);

    /* 调整x */

    x += roundf(advanceWidth * scale);

    /* 调整字距 */

    int kern;

    kern = stbtt_GetCodepointKernAdvance(&info, word[i], word[i + 1]);

    x += roundf(kern * scale);

    }

    /* 将位图数据保存到1通道的png图像中 */

    stbi_write_png("STB.png", bitmap_w, bitmap_h, 1, bitmap, bitmap_w);

    free(fontBuffer);

    free(bitmap);

    return 0;

    }

    运行后可以见STB.png图片,效果如下:

    0b60f526118db300f76eaf9a8cf97e5a.png

    三、总结

    以上便是stb_truetype库的基本用法,可以看出使用过程比较简单,其中需要调整的参数主要是字体大小(字号),使用过程中需要注意以下两点:

    1、上面已经提过,这里再提一遍,在包含stb_truetype.h头文件的时候需要定义STB_TRUETYPE_IMPLEMENTATION,否则将会无法使用。

    2、调用stb_truetype库函数传入的字符编码必须是unicode编码。

    展开全文
  • 该存储库包含一个用于在Python中从字体字符串解析字体限定符的类。 它是Pyromaniac字体系统的一部分,并支持对字体字符串进行操作的SWI: Font_FindFont将字体字符串解析为内部限定符。 Font_ApplyFields允许将一...
  • 下面小编就为大家分享一篇webpack配置导致字体图标无法显示的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Premiere 是不支持简体中文的,在Premiere里面是打不出中文的,安装此补丁可以解决次问题
  • 本文主要介绍如果使用Python第三方库fontTools对OpenType字体文件(包括TrueType轮廓和Postscript轮廓)的解析操作。 fontTools简介 fontTools是由一组操作字体的库和组件组成的Python第三方库,要求Python3.6以

    Python微信订餐小程序课程视频

    https://edu.csdn.net/course/detail/36074

    Python实战量化交易理财系统

    https://edu.csdn.net/course/detail/35475

    前言

    本文主要介绍如果使用Python第三方库fontTools对OpenType字体文件(包括TrueType轮廓和Postscript轮廓)的解析操作。

    fontTools简介

    fontTools是由一组操作字体的库和组件组成的Python第三方库,要求Python3.6以及更高的版本。其中包括merge(字体合并)、subset(取字体子集)以及ttx(将OpenType转化为XML)等。

    安装

    pip install fontTools
    
    

    本文中使用的版本为4.28.5

    字体文件的解析

    读取

    如前文所述,OpenType字体文件标准是有sfnt结构封装的,基于sfnt的表结构,OpenType格式的字体文件可以分为多个表结构。

    创建TTFont实例,通过keys()可以查看字体文件的所有表名:

    from fontTools.ttLib.ttFont import TTFont
    font = TTFont("Resources/simsun.ttf")
    print(font.keys()) 
    
    

    运行结果如下:

    ['GlyphOrder', 'head', 'hhea', 'maxp', 'OS/2', 'hmtx', 'cmap', 'fpgm', 'prep', 'cvt ', 'loca', 'glyf', 'name', 'post', 'gasp', 'EBDT', 'EBLC', 'GDEF', 'GPOS', 'GSUB', 'MERG', 'meta', 'vhea', 'vmtx']
    
    

    表名中包含‘glyf‘,所以simsun.ttf是一个使用TrueType轮廓的字体文件。

    换成使用Postscript轮廓的字体文件:

    font = TTFont("Resources/AdobeSongStd-Light.otf")
    print(font.keys())
    
    

    运行结果如下:

    ['GlyphOrder', 'head', 'hhea', 'maxp', 'OS/2', 'name', 'cmap', 'post', 'CFF ', 'BASE', 'GPOS', 'GSUB', 'VORG', 'hmtx', 'vhea', 'vmtx', 'DSIG']
    
    

    表名中没有’glyf’而存在’CFF ',后者是存储Postscript信息的表格。

    对于TrueType Collection文件则可以使用如下方法读取,返回一个TTFont实例的列表

    from fontTools.ttLib.ttCollection import TTCollection
    collection = TTCollection("Resources/simsun.ttc")
    print(list(collection))
    
    

    运行结果如下:

    [object at 0x000001F8BA66A700>, object at 0x000001F8BE072AF0>]
    
    

    直接从这些表格提取到具体信息是复杂的,但TTFont提供了一些方法以方便地获取信息:

    font.getGlyphOrder() # 返回一个字形名称列表,以其在文件中的顺序排序
    font.getGlyphNames() # 返回一个字形名称列表,以字母顺序排序
    font.getBestCmap() # 返回一个字形ID为键、字形名称为值的字典
    font.getReverseGlyphMap() # 返回一个字形名称为键、字形ID为值的字典
    font.getGlyphName(10000) # 输入字形ID返回字形名称
    font.getGlyphID("uni70E0") # 输入字形名称返回字形ID
    font.getGlyphSet() # 返回一个\_TTGlyphSet对象,包含字形轮廓数据
    
    

    上述方法中,最后一项与轮廓数据有关的方法是最重要的。可惜的是,官方文档似乎并没有对这个对象做进一步解释,故下文是我读源码及其中注释后的分析,如有错漏,敬请指教。

    Pen与_TTGlyphset

    我认为,作者设计这一部分时的难点在于OpenType字体文件标准存在两种不同轮廓描述方式。Pen和_TTGlyphset的存在使得两种不同的轮廓描述方式可以用同一套方法解析和显示。

    The Pen Protocol

    基于TrueType轮廓的字体文件和基于Postscript轮廓是两种截然不同的数据格式。Pen是一个用于标准化的”画"出轮廓的对象,或者是数据和实际轮廓间的媒介。

    具体来说,Pen对象的子类包含将上述两种轮廓数据转化为画线、移动等模拟实际轮廓的方法。在fontTools的pen库中包含将轮廓数据转化为qt、reportLab等第三方库中实例的Pen子类。

    _TTGlpyhset

    _TTGlyphset是一个类似字典的,以字形名称为键、_TTGlyph为值的对象。_TTGlyph中包含字形数据轮廓数据并可以通过draw方法“画”出。_TTGlyph的两个子类_TTGlyphGlyf和_TTGlyphCFF分别对应TrueType轮廓和Postscript轮廓。具体使用方法如下:

    font = TTFont("Resources/simsun.ttf")
    glyph = font.getGlyphSet()["uni70E0"]
    glyph.draw(pen) # pen为实例化后的Pen子类
    
    

    freetypePen

    以freetype-py库为例,使用freetypePen首先需要安装freetype-py:

    pip install freetype-py
    
    

    以下代码修改自自fontTools的官方文档提供的范例程序:

    from fontTools.ttLib import TTFont
    from fontTools.pens.freetypePen import FreeTypePen
    from fontTools.misc.transform import Offset
    
    pen = FreeTypePen(None) # 实例化Pen子类
    font = TTFont("Resources/simsun.ttf") # 实例化TTFont
    glyph = font.getGlyphSet()["uni70E0"] # 通过字形名称选择某一字形对象
    glyph.draw(pen) # “画”出字形轮廓
    width, ascender, descender = glyph.width, font['OS/2'].usWinAscent, -font['OS/2'].usWinDescent # 获取字形的宽度和上沿以及下沿
    height = ascender - descender # 利用上沿和下沿计算字形高度
    pen.show(width=width, height=height, transform=Offset(0, -descender)) # 显示以及矫正
    
    

    运行结果如下:

    注意,可能由于fontTools==4.28.5版本问题,通过pip安装后freetypePen.py并没有包含在pens文件夹下,需要使用的可以从fontTools的GitHub仓库中下载,放到site-packages\fontTools\pens文件夹下,下载路径为https://github.com/fonttools/fonttools/blob/main/Lib/fontTools/pens/freetypePen.py。该问题可能在后续版本中修复。

    ttx

    最后是我个人认为fontTools中最为实用的一个组件ttx,其功能为将TTFont实例转化为XML格式以及将XML文件转化为TTFont。基于这一组件,我们可以较为方便的实现对字体文件内容的修改。

    from fontTools.ttLib import TTFont
    
    font = TTFont("Resources/simsun.ttf") # 实例化TTFont
    font.saveXML("simsun.xml") # TTFont实例转化为XML文件,参数为XML文件路径
    font.importXML("simsun1.xml") # XML文件转化为TTFont实例,参数为XML文件路径
    
    

    除了将整个字体文件转化为XML文件,ttx还可以将文件中的单个表转化为XML文件,避免多余的存储和时间消耗:

    from fontTools.ttLib.ttFont import TTFont
    
    font = TTFont("Resources/simsun.ttf")
    font.saveXML("temp2.xml",tables=["glyf"]) # tables为需要转化的表名组成列表
    
    

    单个表的XML文件直接导入TTFont时,只会影响XML文件存在的表,而其他表不变:

    font.importXML("temp2.xml")
    
    

    参考

    https://fonttools.readthedocs.io/en/latest/index.html

    https://github.com/fonttools/fonttools

    展开全文
  • 如何在不首先在用户系统上安装字体的情况下使用它 下载演示项目-206.31 KB 下载源243.93 KB 目录 介绍 GDI的AddFontResourceEx GDI的AddFontMemResourceEx GDI +的PrivateFontCollection的AddFontFile GDI ...
  • 目录一、前言二、FreeType 存在的问题三、针对 FreeType 存在问题的优化技巧3.1 提高 FreeType 解析字体的精度3.2 关闭 auto\_hint四、总结 一、前言 首先,再阅读本文之前需要对 FreeType 的使用方法有基本的了解,...
  • TrueType字体文件解析字体光栅化

    千次阅读 2019-03-16 16:42:05
    本文主要记录一下这几天做的一个小Demo,它能够读取.ttf格式的字体文件,获取其中的相关数据,将得到的字体信息光栅化处理后输出到一张PNG文件中,最终输出的结果如下: 有兴趣的可以参考一下源码: ...
  • 几种机型emojittf.zip

    2020-09-23 21:10:56
    安卓,mac,htc,三星等等emoji字库,支持emoji的字体,对于有生成与解析字体文件的功能开发很有用,希望能帮助到同行。
  • 使用gensty,您可以基于任何OpenType字体生成LaTeX; 生成器将解析ttf / otf文件,并为所有Unicode符号创建LaTeX命令。 对于SMuFL字体,还可以包含glyphnames.json文件,因此它将创建更友好的名称并包含“私人...
  • java解析pdf.rar

    2020-08-19 15:36:38
    利用spire.pdf.free.jar java解析电子发票pdf 转为结构化数据, 部分发票因为字体原因会出现乱码,可酌情调整
  • 在React项目中引入字体文件并使用

    千次阅读 2022-05-28 21:40:19
    在做React项目的时候,发现UI设计给出的设计稿里,某些文字所用的字体,系统默认不支持。比如设计需要的这个字体:EmerlandRegular,即使在css里将文字字体设置为他们,实际效果也显示不出来。 <Typography ...
  • 汽车之家 css自定义字体反爬解析

    千次阅读 2019-04-15 18:12:49
    本文主要是通过哦爬取汽车之家论坛一些用户热门精华帖子,介绍利用前端页面自定义字体的方式来实现反爬的技术手段,来实践破解它。 自定义字体:@font-face是CSS3中的一个模块,主要是实现将自定义的Web字体嵌入到...
  • 原因大家都清楚:字体不匹配,显示不了对应的字符。 现象就是:本该显示的字符,显示为方框了,一般出现在汉字当中。 那这个错误是怎么产生的呢? 调试信息 d:\ProgramData\Anaconda3\lib\site-packages\matplotlib...
  • 特殊字体的设置开发

    2017-09-12 15:11:04
    font-carrier是一个功能强大的字体操作库,使用它你可以随心所欲的...也可以通过解析已有字体,拿到某个字在这个字体下面对应的svg。让你通过svg的维度随意修改字体展现样式。 我们不生产字体,我们只是字体的搬运工
  • PDF 字体

    千次阅读 2021-01-12 22:54:42
    字体嵌入和替代只有某字体包含字体供应商允许嵌入该字体的设置时,才能嵌入该字体。嵌入可防止在读者查看或打印文件时发生字体替代,并确保读者以其原始字体查看文本。除非文档使用 CID 字体(即,亚洲语言常用的字体...
  • 起点小说字体加密python TTFont解析

    千次阅读 2020-09-29 17:28:37
    起点小说详情加密 阅读数 点击数 起点目标网址: 第一步 ...<span class="wlRaebhI">&#100100;&#100104;...找到对应的字体加密的文件 用百度字体打开 这不就是和页面上的乱码一模一样吗, 但是多次请
  • 它使用Mac(CoreText)和Linux(FontConfig)上的系统本机库,并使用Freetype在Windows上的注册表中解析字体。 安装 可以从CRAN使用install.packages('systemfonts')获得systemfonts。 但是,它仍在开发中,您可以...
  • Adobe软件字体导入无法显示的问题

    千次阅读 2021-01-19 22:52:05
    折腾了好久,可能是因为小众字体的原因,受到知乎网友提醒,将TTF用工具转换OTF格式重新导入即可显示正常使用。
  • 一、下载矢量字体文件TTF 1、可以使用集成好的矢量字体,如FontAwesome、openwebicons、IcoMoon-Free、typicons…… 只要去搜索关键字,找到对应的官网即可下载到,其中FontAwesome使用最为广泛。 2、国内最大的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 71,552
精华内容 28,620
关键字:

解析字体包