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 -= guiTEMPLATE = lib
DEFINES += FREETYPE_LIBRARYCONFIG += 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.0SOURCES += \freetype.cppHEADERS += \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_TRACEINCLUDEPATH += \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 += guiTEMPLATE = 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/ -lFreeTypeLIBS += -luser32
LIBS += -lgdi32# Default rules for deployment.
unix {target.path = /usr/lib
}
!isEmpty(target.path): INSTALLS += target

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/13392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【会议征稿,ACM出版】第四届人工智能,大数据与算法国际学术会议 (CAIBDA 2024, 7/5-7)

由河南省科学院、河南大学主办,河南省科学院智慧创制研究所、河南大学学术发展部、河南大学人工智能学院承办的第四届人工智能,大数据与算法国际学术会议 (CAIBDA 2024)将于2024年7月5-7日于中国郑州隆重举行。CAIBDA 2024致力于为人工智能,大…

碳纳米管须状触嗅觉多模态融合传感器在皮革奢侈品真伪鉴定下的设计探索

一、设计方案 1.传感器选择 触觉传感器:选择基于碳纳米管(CNT)聚合物的柔性MEMS触觉微传感器,由于碳纳米管具有高度的灵敏度和选择性、柔韧性,可以作为触觉传感器,检测材料的微观结构和机械特性。嗅觉传感…

网页打开:为什么国内用新标签页,国外用当前页?

想写这个话题很久了,因为用百度和Google搜索时,打开搜索结果链接时的交互差异,几乎每天都要提醍我一下。 网页打开——这个交互,在设计里,算是极微小,但影响极广泛的操作设计。甚至,因此形成了…

【Python】图形用户界面设计

1、设计并编写一个窗口程序,该窗口只有一个按钮,当用户单击时可在后台输出hello world. import tkinter as tk def on_button_click():print("hello world") # 创建主窗口 root tk.Tk() root.title("Hello World Button") # 设置窗口大小 root.geometry…

代码随想录-算法训练营day41【动态规划04:01背包问题-滚动数组、分割等和子集】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 第九章 动态规划part04● 01背包问题,你该了解这些! ● 01背包问题,你该了解这些! 滚动数组 ● 416. 分割等和子集 正式开始背包问题,背包问题还是挺难的,虽然大家可能看了很多背包问题模板代码,感觉挺简单,…

SAP_SNOTE_补丁修复_全流程实战

SAP ABAP 顾问(开发工程师)能力模型-CSDN博客文章浏览阅读1.2k次。目标:基于对SAP abap 顾问能力模型的梳理,给一年左右经验的abaper 快速成长为三年经验提供超级燃料!https://blog.csdn.net/java_zhong1990/article/d…

文字游侠AI丨简直是写作神器,头条爆文一键生成稳定赚米!附渠道和详细教程(只需四步)!

在数字时代的浪潮中,人们不断寻求网络空间中的商机,期望在互联网的浩瀚海洋里捕捉到稳定的财富。随着人工智能技术的突飞猛进,越来越多的AI工具被融入到各行各业,开辟了新天地,带来了创新的盈利模式。 其中&#xff0c…

回收站删除的照片怎么恢复?7个实用方法为你找回照片!

“我刚刚在对电脑上的照片进行清理,不小心错删了一张还需要的照片,但是在使用回收站时,将它删除了,有什么恢复回收站照片的简单方法吗?” 照片是我们生活点滴的见证,无论是外出旅游还是日常琐碎&#xff0c…

对话YashanDB CTO陈志标:如何推动国产数据库长远发展

深圳计算科学研究院(以下简称“深算院”)是深圳市人民政府2018年11月批准建设的“十大基础研究机构”之一,由深圳市科技创新委员会主管、深圳大学举办、深圳市龙华区人民政府共建的二类事业法人单位。 崖山数据库系统YashanDB是深算院完全自主…

Originx的创新解法之:应用程序故障篇

Originx并不期望做一个完整覆盖全栈的监控体系,而是利用北极星指标体系标准化找出故障方向,然后联动各种成熟的监控数据形成证据链条,并将各种数据融合在一个故障报告之中。更多信息请参考 Log | Metrics | Trace的联动方式探讨http://mp.wei…

iPhone携手ChatGPT?苹果OpenAI或将强强联手

近年来,人工智能技术的蓬勃发展掀起了一场席卷全球的科技浪潮,而智能手机作为人们日常生活中不可或缺的一部分,自然成为了这场AI竞赛的重要战场。各大科技巨头纷纷加码布局,力图在AI领域占据领先地位。 近日,据知情人士…

智慧城市新篇章:城市街道治理视频系统建设的探索与实践

一、背景分析 随着城市化进程的加快和社会治安形势的日趋复杂,街道治安管理面临着前所未有的挑战。对于街道治安的管理,面临着街道上机动车、非机动车违停、游商摊贩、垃圾堆积、人员监管等问题,既影响市容市貌,又有安全隐患。传…

Springboot+Shiro实现登录

Shiro的简单介绍 Shiro是Java的一个安全框架,旨在简化身份验证和授权。Shiro在JavaSE和JavaEE项目中都可以使用。它主要用来处理身份认证,授权,企业会话管理和加密等。 shiro由三部分组成: 1、Subject:当前操作的用…

自定义类似vite的命令行

一、第一步 随便新建一个文件夹,终端执行npm init,生成如图的结构 其中name就是命令行的名字 二、第二步 新建一个js文件,在其顶部加入这串代码#!/usr/bin/env node,#!就是告诉系统这个是可执行脚本,/usr/bin/env就是系统环境变量&#x…

Spring-Cloud 微服务

1. 微服务架构 1.1 单体应用架构---内部项目【OA WMS等】 将项目所有模块(功能)打成jar或者war,然后部署一个进程 优点: 1:部署简单:由于是完整的结构体,可以直接部署在一个服务器上即可。 2:技术单一:项目不需要复杂的技术栈,往往一套熟悉的…

争议PCDN:限速、局停为哪般?

最近,在国内通信人聚集的有个话题特别火,那就是部分运营商给家庭宽带接入用户进行上行限速,甚至还会出现局停的极端现象,引起了不小争议。 “每个月按时交宽带费,运营商凭啥给我限速?”这是很多网友的疑问…

记PLSQL链接Oracle数据库

一、环境 Windows环境安装plsql工具 Oracle部署在服务器上面。 由于我之前在本地Windows安装了一个Oracle数据库,结果导致之前已经在连接的PLSQL链接不上。 二、操作 PLSQL工具正常安装,主要就是一些Oracle的一些配置,和oracle客户端。 o…

HashTable, HashMap, ConcurrentHashMap 三者区别

目录 1. HashMap 2. HashTable 3. ConcurrentHashMap 1. HashMap HashMap 是 Java 中非常常用的一个数据结构,它主要用于存储 键值对(K,V)。 在JDK 1.7中,HashMap的实现是基于 Table数组 和 Entry链表 的组合。 从…

在 pyGTK 中使用 visibility_notify 事件

问题背景 在 Windows 系统中开发 pygtk 应用程序时,需要知道何时一个窗口被另一个窗口遮挡或显示,以便停止繁重的绘图进程。为此,可以使用 visibility_notify_event 信号来获取窗口可见性状态的改变。 解决方案 可以使用 visibility_notif…

【Linux】缓冲区

目录 一、初识缓冲区 二、用户级缓冲区 三、内核级缓冲区 四、内核级缓冲区 VS 用户级缓冲区 五、用户级缓冲区在哪里? 一、初识缓冲区 缓冲区是什么?可以简单理解成一部分内存。例如用户缓冲区(char arr[])、C标准库提供的缓冲区、操作系统提供的缓…