Freetype2 DEMO部分源码

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

最近很多TX给我发邮件要Freetype2 Demo的源代码。

我在之前的博客中说过在开源IndieLib论坛上我已经发布了VJGUI,那里包含了所有freetype2 Demo的核心代码。但是最近我已打算离开那个项目了,因为做引擎核心的创始人很久没有露面和更新了。

所以我打算写一篇文章说说那些代码。原来的那个Demo(这里 )是仓促写的,代码比较难看,所以我会稍作整理,将一些最有用的核心代码贴出来与大家分享

(未完待续)......

 

2009年7月11日继续

下面贴出关键源代码:(本来想上传整个Demo,后来发现写得太丑了,真不好意思拿出手)

1. 初始化FT lib

 FT_Library  library;   /* handle to library     */
 FT_Face     face;      /* handle to face object */

 // 1. Init the library
 if ( FT_Init_FreeType( &library ) )
 {
  MessageBox(_T("Init freetype library failed."), _T("Error"), MB_OK | MB_ICONERROR);
  FT_Done_FreeType(library);
  return;
 }

 

int nface = 0;
 //nface = 1;

//pathstring是TTF文件的路径
 FT_Error error = FT_New_Face(
      library,
      pathstring,
      nface,
      &face );
 
 if ( error == FT_Err_Unknown_File_Format )
 {
  MessageBox(_T("Font format not supported."), _T("Error"), MB_OK | MB_ICONERROR);
  FT_Done_FreeType(library);
  return;
 }
 else if ( error )
 {
  MessageBox(_T("Font face open failed."), _T("Error"), MB_OK | MB_ICONERROR);
  FT_Done_FreeType(library);
  return;
 }

 

2. 获取font face信息

AddMessage(_T("Face information:"));

//glyph数量
 sMessage.Format(_T("      Totally %d glyphs."), face->num_glyphs);
 AddMessage(sMessage);

//每EM unit数量
 sMessage.Format(_T("      %d uints per EM."), face->units_per_EM);
 AddMessage(sMessage);

//char map数量
 sMessage.Format(_T("      %d char maps."), face->num_charmaps);
 AddMessage(sMessage);

//fix size

//这个对于汉字很重要,fix size对于小字体显示很有帮助
 sMessage.Format(_T("      %d fixed sizes:"), face->num_fixed_sizes);
 if(face->available_sizes)
 {
  for(int ii = 0

OpenCV支持中文、日文、韩文等复杂字体的FreeType字体渲染引擎cv::freetype::FreeType2 封装了 FreeType 字体渲染引擎,用于在图像上绘制高质量的 UTF-8 编码文本,支持中文、日文、韩文等复杂语言字符,以及字体样式、大小、粗细等自定义设置。 阅读详情

相关推荐

告别豆腐块!用OpenCV+FreeType2在图片上优雅显示中文(附完整C++代码)

本文详细介绍了如何通过OpenCV结合FreeType2库解决中文显示为'豆腐块'的问题,提供了完整的C++代码实现。文章涵盖从FreeType2安装配置到高级应用技巧,帮助开发者在图像处理项目中优雅显示中文文本,适用于数据可视化、视频字幕生成等多种场景。

weixin_30832143的博客 86

freetype2demo

freetype2 demo 官方的

Qt5.14.2静态编译踩坑记:从源码到独立EXE,我花了6小时总结的避坑清单

本文详细记录了Qt5.14.2静态编译的全过程,特别是使用32位MinGW时的关键避坑技巧。从环境配置、参数优化到编译技巧和体积压缩,作者分享了6小时实战中积累的宝贵经验,帮助开发者高效完成静态编译,生成独立EXE文件。

weixin_30918633的博客 384

freetype2+SDL+SDL_ttf源码包及字符串转bmp图片demo

1/包内有freetype2 SDL SDL_ttf的源码2/包内有字符串转bmp图片的demo 3/运行前需要确定已经安装好了freetype2 SDL SDL_ttf

Freetype编译,demo运行,关键API解析。

Freetype编译,demo运行,关键API解析。

u013945158的博客 3530

OpenCV 使用freetype在图像上写中文

【代码】OpenCV 使用freetype在图像上写汉字。

WAF 3076

Windows10+Qt+Opencv+freetype 解决putText中文乱码问题

Windows10系统下,在qt工程中运用Opencv的putText方法输出中文汉字时,显示为???乱码,该文章给出了如何解决此问题的方案。需要安装配置opencv_contrib中freetype,同时前提条件是需要先安装配置freetype和harfbuzz

kangzhaofang的博客 3710

android studio 编译freeType

《Android native 层使用opengl渲染YUV420p和NV12》 《》

Canok 1964

Windows下Visual Studio C++项目配置FreeType字体引擎开发环境全攻略

字体渲染是图形开发中的基础技术,其核心原理是将矢量字体轮廓通过光栅化算法转换为屏幕可显示的位图。FreeType作为一款开源、高质量的跨平台字体引擎,实现了这一过程,支持TrueType、OpenType等多种字体格式。在C++项目开发中,尤其是在Windows平台使用Visual Studio进行图形、游戏或UI开发时,集成第三方库如FreeType是常见需求。其技术价值在于提供了稳定、高效的字体加载与渲染能力,避免了重复造轮子。典型的应用场景包括游戏引擎的文本渲染系统、桌面应用的字体显示、以及需要动态生

weixin_30613433的博客 376

OpenGL中文显示实战:基于FreeType与纹理图集的完整方案

OpenGL本身不直接认识文字,它只处理点、线和三角形。要实现中文显示,需要将汉字转化为可渲染的图形数据。FreeType作为字体解析库,能将TTF字体栅格化为灰度位图;再通过纹理图集技术,把多个字形拼合到一张纹理上,配合四边形与UV坐标即可高效渲染任意Unicode字符。这种方案无需依赖系统GDI,支持实时扩展字符集,广泛应用于CAD插件、游戏UI和工业软件中的中文HUD。本文从字体文件到屏幕像素,完整讲解基于FreeType与纹理图集的OpenGL汉字渲染实现,并分享实际项目中的常见坑与优化策略。

weixin_33416697的博客 316

Windows 11下OCC 7.6.0 + VTK 9.1 + Qt 5.15.2环境搭建:从源码编译到CMake项目配置的完整避坑记录

本文详细介绍了在Windows 11系统上搭建OCC 7.6.0、VTK 9.1和Qt 5.15.2集成开发环境的完整流程,包括源码编译、CMake配置及常见问题解决方案。重点分享了实际编译过程中的关键配置和避坑技巧,帮助开发者高效完成环境搭建,适用于三维几何与可视化应用开发。

weixin_30698527的博客 428

字体抗锯齿技术:从原理到实践,打造清晰数字界面

在计算机图形学中,抗锯齿是解决数字图像在离散像素上显示连续曲线时产生锯齿问题的关键技术。其核心原理是通过灰度过渡或子像素计算,模拟中间色来平滑边缘,从而欺骗人眼感知。这项技术的价值在于显著提升文本可读性、增强视觉舒适度,并塑造界面的专业品质。从操作系统级渲染到游戏引擎应用,抗锯齿技术广泛应用于各类数字界面。本文聚焦于字体渲染场景,深入剖析了次像素渲染和灰度抗锯齿等核心方案,并结合FreeType库的实战应用,为开发者提供了跨平台选型与性能调优的工程实践指南。

weixin_30632883的博客 514

ESP32 LVGL8.1在VS2019中的高效仿真环境配置指南

本文详细介绍了在Visual Studio 2019中高效配置ESP32 LVGL8.1仿真环境的完整指南。通过分步讲解VS2019安装、LVGL资源包获取与手动组装、工程属性配置及常见编译错误解决,帮助嵌入式开发者快速搭建流畅的PC端仿真环境,实现高效的UI开发与调试,大幅缩短开发周期。

weixin_28677451的博客 101

【开源软件移植】Qt 开源软件 DiffPDF 适配鸿蒙 PC 全流程实战 —— 从交叉编译到真机跑通

本文记录了将Qt开源软件DiffPDF移植到鸿蒙PC的全过程。作者首先面临Qt4到Qt5的版本适配问题,通过使用Debian维护的Qt5补丁版本解决。随后详细介绍了交叉编译的完整流程,包括环境配置、三方库编译(poppler、fontconfig等)以及Qt-OHOS应用的特殊运行机制。重点解决了编译过程中遇到的工具链兼容性、依赖库禁用、符号缺失等问题,最终成功在鸿蒙PC上运行DiffPDF。文章提供了可复现的操作步骤和源码仓库,为Qt应用鸿蒙化提供了实用参考。

一键难忘的博客 4万+

四、linux系统 应用开发:UI开发环境配置概述 (三)

linux系统 应用开发:UI开发环境配置概述:LVGL环境搭建

暮云星影的博客 525

ESP32开发者必看:在VS2019上快速搭建LVGL8.1仿真环境(附资源包)

本文为ESP32开发者提供在VS2019上快速搭建LVGL8.1仿真环境的详细指南,涵盖环境配置、资源获取、工程设置及常见问题解决方案。通过Visual Studio 2019的高效仿真,开发者可大幅提升LVGL界面验证效率,适用于嵌入式GUI开发测试。

weixin_30482181的博客 201

【opencv】opencv在图片、视频嵌中英文字符的方法

转自:http://www.cnblogs.com/hujingshuang/p/5119015.html 说明:本博文是根据前人已有的成果并结合自己的理解而成的。为了避免让读者感到繁琐,我将运用小学及初中学习的总分总、承上启下的写作技巧进行讲解,力图做到详略有致,言简意赅,图文并茂,通俗易懂。 实验平台:VS2010 + opencv2.4.10 (其他版本...

weixin_30249203的博客 138

麒麟系统开发笔记(十三):在国产麒麟系统上编译OSG库、搭建基础开发环境和移植测试Demo

在国产麒麟系统上实现C++三维仿真,使用OSG技术,其他基于web的技术也是可以但是交互上鼠标拽托等交互相对差一些,所以这块需要斟酌选择到底是何种技术来取舍。本篇在厂家指定的麒麟系统上编译OSG。

长沙红胖子 Qt・西安|省级科研团队从业背景,深耕双一流体系高精尖技术配套研发|剥离高精尖机理,沉淀高端特种行业领域 Qt 工程化落地经验|博文仅分享通用技术总结,输出公开普适工程思路。 1万+
上一篇: MFC编程点滴系列3-说说VC2008 Feature Pack
下一篇: MFC编程点滴系列4-有多少MFC可以重来
superjoel
博客等级 码龄25年 137粉丝 24原创
评论 29
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值