Code Monkey home page Code Monkey logo

fontzip's Introduction

字体提取工具

可用作APK字体压缩 用于提取仅需要的美化文字,来压缩assets下的字体文件大小。

Download

Gif

GUI

FontZip2 使用说明:

Windows下运行run.bat,选字体文件填入提取文字,2.0加入选择输出文件类型,点击OK,在字体同级目录下会生成fontmin文件, 关闭GUI/命令窗口,稍等待2-5s后即可。

mac linux 等请选择FontZip.jar

经过测试,已经把项目5MB的艺术字体,按需求提取后,占用只有20KB,并且可正常使用。大大压缩了apk包的大小,还可以减小资源加载的占用。有此需要的同学赶紧用起来吧。支持otf、ttf、ttc、woff、eof 均测试提取成功。

sfntly(请使用FontZip)

sfnttool.jar下载

sfnttool.jar源码

sfnttool.jar使用说明

  • 先提取需要特殊字体美化的文字,

  • 把字体和jar包放在同目录下,按下Shift再点击鼠标右键,此处打开命令窗口,输入下面命令

     java -jar sfnttool.jar -s '此处放入需要提取的文字' font.ttf fontc.ttf 
     font.ttf ------ 原字体文件名
     fontc.ttf------ 提取后的字体文件名
    

联系 Jrking

邮箱:[email protected]

fontzip's People

Contributors

forjrking avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fontzip's Issues

OTF字体提取失败

java.lang.NullPointerException
	at com.google.typography.font.tools.sfnttool.GlyphCoverage.getGlyph(Unknown Source)
	at com.google.typography.font.tools.sfnttool.GlyphCoverage.touchGlyph(Unknown Source)
	at com.google.typography.font.tools.sfnttool.GlyphCoverage.getGlyphCoverage(Unknown Source)
	at com.google.typography.font.tools.sfnttool.SfntTool.subsetFontFile(Unknown Source)
	at com.google.typography.font.tools.sfnttool.SfntTool.main(Unknown Source)
	at util.FontGenerateManager.generateFontByContent(FontGenerateManager.java:27)
	at gui.ToolGUI.mouseClicked(ToolGUI.java:114)
	at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$500(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

文件 AdobeHeitiStd-Regular.otf

此处放入需要提取的文字

此处放入需要提取的文字,这个需要填什么,填写字体文件名,出现异常:

Exception in thread "main" java.lang.NullPointerException
        at com.google.typography.font.tools.sfnttool.GlyphCoverage.getGlyph(Unknown Source)
        at com.google.typography.font.tools.sfnttool.GlyphCoverage.touchGlyph(Unknown Source)
        at com.google.typography.font.tools.sfnttool.GlyphCoverage.getGlyphCoverage(Unknown Source)
        at com.google.typography.font.tools.sfnttool.SfntTool.subsetFontFile(Unknown Source)
        at com.google.typography.font.tools.sfnttool.SfntTool.main(Unknown Source)

Exception in thread "main" java.lang.NullPointerException

java -jar sfnttool.jar -s 'xyz' a.ttf mrfu.ttf
Exception in thread "main" java.lang.NullPointerException
    at com.google.typography.font.tools.sfnttool.GlyphCoverage.getGlyph(Unknown Source)
    at com.google.typography.font.tools.sfnttool.GlyphCoverage.touchGlyph(Unknown Source)
    at com.google.typography.font.tools.sfnttool.GlyphCoverage.getGlyphCoverage(Unknown Source)
    at com.google.typography.font.tools.sfnttool.SfntTool.subsetFontFile(Unknown Source)
    at com.google.typography.font.tools.sfnttool.SfntTool.main(Unknown Source)

otf 字体不支持

SourceHanSansCN-Regular.zip

压缩上面的 otf 字体报错:

$ java -jar sfnttool.jar -s '0123456789' SourceHanSansCN-Regular.otf                                                                  sou.otf
Exception in thread "main" java.lang.NullPointerException
        at com.google.typography.font.tools.sfnttool.GlyphCoverage.get                                                                Glyph(Unknown Source)
        at com.google.typography.font.tools.sfnttool.GlyphCoverage.tou                                                                chGlyph(Unknown Source)
        at com.google.typography.font.tools.sfnttool.GlyphCoverage.get                                                                GlyphCoverage(Unknown Source)
        at com.google.typography.font.tools.sfnttool.SfntTool.subsetFo                                                                ntFile(Unknown Source)
        at com.google.typography.font.tools.sfnttool.SfntTool.main(Unk                                                                nown Source)

ttf字体提取失败

java.lang.NullPointerException
at com.google.typography.font.sfntly.Font.getTable(Unknown Source)
at com.google.typography.font.tools.subsetter.Subsetter.setCMaps(Unknown Source)
at com.google.typography.font.tools.sfnttool.SfntTool.subsetFontFile(Unknown Source)
at com.google.typography.font.tools.sfnttool.SfntTool.main(Unknown Source)
at util.FontGenerateManager.generateFontByContent(FontGenerateManager.java:27)
at gui.ToolGUI.mouseClicked(ToolGUI.java:114)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270)
at java.awt.Component.processMouseEvent(Component.java:6542)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6304)
at java.awt.Container.processEvent(Container.java:2239)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2297)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4544)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
at java.awt.Container.dispatchEventImpl(Container.java:2283)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
at java.awt.EventQueue$4.run(EventQueue.java:733)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.