Qt编译和使用freetype矢量字库方法

在之前讲过QT中利用freetype提取字库生成图片的方法:

#QT利用freetype提取字库图片_qt freetype-CSDN博客文章浏览阅读1.2k次。这是某个项目中要用到的片段,结合上一篇文章#QT从字体名获取字库文件路径使用// 保存位图int SaveBitmapToFile(HBITMAP hBitmap, LPSTR lpFileName){HDC hDC;int iBits;WORD wBitCount; DWORD dwPaletteSize=0,dwBmBitsSize,dwDIBSize_qt freetypehttps://blog.csdn.net/wangningyu/article/details/109743104

QT在场景中利用freetype实现独立的文字绘制子类QxFreeTypeTextItem-CSDN博客QT在场景中利用freetype实现独立的文字绘制子类QxFreeTypeTextItem,继上一章节讲过qt中如何编译freetype。https://blog.csdn.net/wangningyu/article/details/138927884

忘记说如何编译了,通常我们会将freetype编译成一个动态库,这样可以供以后的qt其他工程直接调用,免得每次COPY一堆比较麻烦,下面将告诉大家如何编译成DLL库:

 1、先下载freetype源码,当前版本是2.13.2最新的:

The FreeType Project - Browse /freetype2 at SourceForge.net

2、按照下面的步骤,新建一个dll工程:

这里的名称将是你以后DLL库的名称:

这里根据自己的需要勾选:

后面都是默认下一步完成即可,下载后解压至QT DLL工程目录

此时只需要打开.pro文件,COPY下面这一份即可:

QT -= gui

TEMPLATE = lib
DEFINES += FREETYPE_LIBRARY

CONFIG += c++11

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    freetype.cpp

HEADERS += \
    FreeType_global.h \
    freetype.h

# 这里开始COPY即可
DEFINES += FT2_BUILD_LIBRARY
DEFINES += WIN32
DEFINES += _LIB
DEFINES += _CRT_SECURE_NO_WARNINGS
DEFINES += FT_DEBUG_LEVEL_ERROR
DEFINES += FT_DEBUG_LEVEL_TRACE

INCLUDEPATH += \
    freetype-2.13.2/include/

# 这里需要注意下载存放的路径freetype-2.13.2与.pro文件同级目录
SOURCES += \
    freetype-2.13.2/src/ftdebug.c \
    freetype-2.13.2/src/ftsystem.c \
    freetype-2.13.2/src/autofit/autofit.c \
    freetype-2.13.2/src/base/ftbase.c \
    freetype-2.13.2/src/base/ftbbox.c \
    freetype-2.13.2/src/base/ftbdf.c \
    freetype-2.13.2/src/base/ftbitmap.c \
    freetype-2.13.2/src/base/ftcid.c \
    freetype-2.13.2/src/base/ftfstype.c \
    freetype-2.13.2/src/base/ftgasp.c \
    freetype-2.13.2/src/base/ftglyph.c \
    freetype-2.13.2/src/base/ftgxval.c \
    freetype-2.13.2/src/base/ftinit.c \
    freetype-2.13.2/src/base/ftmm.c \
    freetype-2.13.2/src/base/ftotval.c \
    freetype-2.13.2/src/base/ftpatent.c \
    freetype-2.13.2/src/base/ftpfr.c \
    freetype-2.13.2/src/base/ftstroke.c \
    freetype-2.13.2/src/base/ftsynth.c \
    freetype-2.13.2/src/base/fttype1.c \
    freetype-2.13.2/src/base/ftwinfnt.c \
    freetype-2.13.2/src/bdf/bdf.c \
    freetype-2.13.2/src/cache/ftcache.c \
    freetype-2.13.2/src/cff/cff.c \
    freetype-2.13.2/src/cid/type1cid.c \
    freetype-2.13.2/src/dlg/dlgwrap.c \
    freetype-2.13.2/src/gzip/ftgzip.c \
    freetype-2.13.2/src/lzw/ftlzw.c \
    freetype-2.13.2/src/pcf/pcf.c \
    freetype-2.13.2/src/pfr/pfr.c \
    freetype-2.13.2/src/psaux/psaux.c \
    freetype-2.13.2/src/pshinter/pshinter.c \
    freetype-2.13.2/src/psnames/psmodule.c \
    freetype-2.13.2/src/raster/raster.c \
    freetype-2.13.2/src/sfnt\sfnt.c \
    freetype-2.13.2/src/smooth\smooth.c \
    freetype-2.13.2/src/sdf\sdf.c \
    freetype-2.13.2/src/svg\svg.c \
    freetype-2.13.2/src/truetype/truetype.c \
    freetype-2.13.2/src/type1/type1.c \
    freetype-2.13.2/src/type42/type42.c \
    freetype-2.13.2/src/winfonts/winfnt.c \

# 这里复制结束

# Default rules for deployment.
unix {
    target.path = /usr/lib
}
!isEmpty(target.path): INSTALLS += target

这里基本上就编译成功,没什么问题了

release目录会生成FreeType.dll与FreeType.o文件,即可供其他程序调用。

下面是其他调用freetype工程的pro文件可以参考一下:

QT += gui

TEMPLATE = lib
DEFINES += MTFREETYPE_LIBRARY
CONFIG += dll
CONFIG += c++11
DESTDIR = ../Bin

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000
# disables all the APIs deprecated before Qt 6.0.0

# 这里需要注意根据你的实际情况来设定
INCLUDEPATH += \
    ../FreeType/freetype-2.13.2/include/

SOURCES += \
    mtfreetype.cpp \

HEADERS += \
    MTFreeType_global.h \
    mtfreetype.h \

# 这里需要链接你的.o文件所在路径
LIBS += -L../Bin/ -lFreeType

LIBS += -luser32
LIBS += -lgdi32



# Default rules for deployment.
unix {
    target.path = /usr/lib
}
!isEmpty(target.path): INSTALLS += target

  • 14
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这份文档提供了FreeType 2函数库设计与实现的细节。本文档的目标是让开发人员更好的理解FreeType 2是如何组织的,并让他们扩充、定制和调试它。 首先,我们先了解这个库的目的,也就是说,为什么会写这个库: * 它让客户应用程序方便的访问字体文件,无论字体文件存储在哪里,并且与字体格式无关。 * 方便的提取全局字体数据,这些数据在平常的字体格式中普遍存在。(例如:全局度量标准,字符编码/字符映射表,等等) * 方便的提取某个字符的字形数据(度量标准,图像,名字,其他任何东西) * 访问字体格式特定的功能(例如,SFNT表,多重控制,OpenType轮廓表) Freetype 2的设计也受如下要求很大的影响: * 高可移植性。这个库必须可以运行在任何环境中。这个要求引入了一些非常激烈的选择,这些是FreeType2的低级系统界面的一部分。 * 可扩展性。新特性应该可以在极少改动库基础代码的前提下添加。这个要求引入了非常简单的设计:几乎所有操作都是以模块的形式提供的。 * 可定制。它应该能够很容易建立一个只包含某个特定项目所需的特性的版本。当你需要集成它到一个嵌入式图形库的字体服务器中时,这是非常重要的。 * 简洁高效。这个库的主要目标是只有很少cpu和内存资源的嵌入式系统。 这份文档的其他部分分为几个部分。首先,一些章节介绍了库的基本设计以及Freetype 2内部对象/数据的管理。 接下来的章节专注于库的定制和与这个话题相关的系统特定的界面,如何写你自己的模块和如何按需裁减库初始化和编译

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汪宁宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值