<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          利用Python快速提取字體子集

          共 1652字,需瀏覽 4分鐘

           ·

          2023-08-02 20:33

          添加微信號 " CNFeffery "加入技術(shù)交流群

          ?

          本文完整示例代碼及文件已上傳至我的Github倉庫https://github.com/CNFeffery/PythonPracticalSkills

          ?

          大家好我是費(fèi)老師,這是我的系列文章「Python實(shí)用秘技」的第16期,本系列立足于筆者日常工作中使用Python積累的心得體會,每一期為大家?guī)硪粋€幾分鐘內(nèi)就可學(xué)會的簡單小技巧。

          作為系列第16期,我們即將學(xué)習(xí)的是:快速提取字體子集。

          f7b7de27dc0491d33fbf2fbd903c0546.webp

          在我們?nèi)粘_M(jìn)行數(shù)據(jù)可視化、web應(yīng)用開發(fā)等場景中,經(jīng)常會用到一些特殊的非系統(tǒng)自帶字體,尤其是中文字體,由于包含的字符數(shù)量眾多,因此體積一般都比較大,這在進(jìn)行數(shù)據(jù)可視化讀取字體文件,或是網(wǎng)頁應(yīng)用中通過網(wǎng)絡(luò)加載字體文件時,就會帶來更多的耗時。

          而我們完全可以針對字體文件運(yùn)用“按需引入”的思想,從原始的體積較大的全量字體文件中,根據(jù)我們實(shí)際使用到的文字范圍,進(jìn)行子集的提取,從而大幅度提升效率。

          我們可以利用Python中的fonttools庫來快捷實(shí)現(xiàn)此項需求,它由谷歌開源,自帶了若干實(shí)用的字體處理相關(guān)命令行工具,使用pip install fonttools安裝完成后,我們只需要按照下列格式執(zhí)行命令行工具pyftsubset即可:

                
                pyftsubset 原始字體文件路徑 --text=需要保留的字符 --output-file=輸出子集字體文件路徑

          而當(dāng)我們需要進(jìn)行保留的字符眾多時,則可以通過書寫Python腳本的方式,批量拼接命令行進(jìn)行模擬執(zhí)行:

                
                import os
          import re

          # 讀入目標(biāo)文本內(nèi)容
          with open('./將進(jìn)酒.txt', encoding='utf-8'as t:
              source_content = t.read()
              
          # 模擬執(zhí)行pyftsubset命令生成字體子集
          os.system(
              'pyftsubset 鐘齊志莽行書.ttf --text={} --output-file=鐘齊志莽行書mini.ttf'.format(
                  # 去除空白字符后去重
                  ''.join(set(re.sub('\s''', source_content)))
              )
          )

          通過上面的示例代碼,我們從本地原體積為4698kb的字體文件中,提取出大小僅有76kb的目標(biāo)子集字體文件:

          88d3cdc539db792bc3d98d37a3894c97.webp

          在此基礎(chǔ)上,我們就可以在項目中「大幅度」優(yōu)化外部字體的使用效率??,譬如下面的示例dash應(yīng)用(相關(guān)源碼及文件已上傳至文章開頭倉庫):

          2bb34aa8151bf8eff8a4af7997be23c3.webp

          本期分享結(jié)束,咱們下回見~??

          e017070ee717d78339e5af33d41bdb62.webp

          加入知識星球 【我們談?wù)摂?shù)據(jù)科學(xué)】

          600+ 小伙伴一起學(xué)習(xí)!








          ·  推薦閱讀  ·

          dill:Python中增強(qiáng)版的pickle

          邊玩游戲邊學(xué)Git?這個開源網(wǎng)站我愛了

          在Python中將markdown轉(zhuǎn)換為漂亮的網(wǎng)頁



          瀏覽 48
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  123区麻豆成人片 | 国产成人自拍在线 | 九九九免费在线视频 | 欧美老太太乱伦免费视频 | 亚洲欧在线观看 |