freetype的安装与使用

如何交叉编译程序:以freetype为例 如何交叉编译开源软件和程序。交叉编译程序的万能命令。 程序缺少头文件和库文件如何操作。 阅读详情
AI摘要

本文介绍Freetype2字体库在PC及s3c2440平台的安装步骤与测试方法,包括配置环境、编译安装过程及示例程序,适用于Ubuntu 14.04及Linux-2.6.22内核。

一、在PC上的安装与使用

1) 开发环境

系统版本: ubuntu14.04

freetype版本: freetype-2.4.10

gcc版本: gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)


2) 步骤

1. 解压缩       tar  xjf  freetype-2.4.10.tar.bz2

2. 配置          ./configure

3. 编译安装   make  install

    注意: 安装完后会将freetype的头文件安装到/usr/local/include/freetype2目录下,库文件安装到

               /usr/local/lib目录下

4. 测试用例

    编译测试文件example.c       gcc  example.c  -o  example  -I  /usr/local/include/freetype2  -lfreetype  -lm

/* example1.c                                                      */
/*                                                                 */
/* This small program shows how to print a rotated string with the */
/* FreeType 2 library.                                             */


#include <stdio.h>
#include <string.h>
#include <math.h>

#include <ft2build.h>
#include FT_FREETYPE_H


#define WIDTH   80
#define HEIGHT  80


/* origin is the upper left corner */
unsigned char image[HEIGHT][WIDTH];


/* Replace this function with something useful. */

void
draw_bitmap( FT_Bitmap*  bitmap,
             FT_Int      x,
             FT_Int      y)
{
  FT_Int  i, j, p, q;
  FT_Int  x_max = x + bitmap->width;
  FT_Int  y_max = y + bitmap->rows;


  for ( i = x, p = 0; i < x_max; i++, p++ )
  {
    for ( j = y, q = 0; j < y_max; j++, q++ )
    {
      if ( i < 0      || j < 0       ||
           i >= WIDTH || j >= HEIGHT )
        continue;

      image[j][i] |= bitmap->buffer[q * bitmap->width + p];
    }
  }
}


void
show_image( void )
{
  int  i, j;


  for ( i = 0; i < HEIGHT; i++ )
  {
    for ( j = 0; j < WIDTH; j++ )
      putchar( image[i][j] == 0 ? ' '
                                : image[i][j] < 128 ? '+'
                                                    : '*' );
    putchar( '\n' );
  }
}


int
main( int     argc,
      char**  argv )
{
  FT_Library    library;
  FT_Face       face;

  FT_GlyphSlot  slot;
  FT_Matrix     matrix;                 /* transformation matrix */
  FT_Vector     pen;                    /* untransformed origin  */
  FT_Error      error;

  char*         filename;
  char*         text;

  double        angle;
  int           target_height;
  int           n, num_chars;


  if ( argc != 3 )
  {
    fprintf ( stderr, "usage: %s font sample-text\n", argv[0] );
    exit( 1 );
  }

  filename      = argv[1];                           /* first argument     */
  text          = argv[2];                           /* second argument    */
  num_chars     = strlen( text );
  angle         = ( 0.0 / 360 ) * 3.14159 * 2;      /* use 25 degrees     */
  target_height = HEIGHT;

  error = FT_Init_FreeType( &library );              /* initialize library */
  /* error handling omitted */

  error = FT_New_Face( library, argv[1], 0, &face ); /* create face object */
  /* error handling omitted */

#if 0
  /* use 50pt at 100dpi */
  error = FT_Set_Char_Size( face, 50 * 64, 0,
                            100, 0 );                /* set character size */

	/* pixels = 50 /72 * 100 = 69  */
#else
	FT_Set_Pixel_Sizes(face, 24, 0);
#endif
  /* error handling omitted */

  slot = face->glyph;

  /* set up matrix */
  matrix.xx = (FT_Fixed)( cos( angle ) * 0x10000L );
  matrix.xy = (FT_Fixed)(-sin( angle ) * 0x10000L );
  matrix.yx = (FT_Fixed)( sin( angle ) * 0x10000L );
  matrix.yy = (FT_Fixed)( cos( angle ) * 0x10000L );

  /* the pen position in 26.6 cartesian space coordinates; */
  /* start at (0,40) relative to the upper left corner  */
  pen.x = 0 * 64;
  pen.y = ( target_height - 40 ) * 64;

  for ( n = 0; n < num_chars; n++ )
  {
    /* set transformation */
    FT_Set_Transform( face, &matrix, &pen );

    /* load glyph image into the slot (erase previous one) */
    error = FT_Load_Char( face, text[n], FT_LOAD_RENDER );
    if ( error )
      continue;                 /* ignore errors */

    /* now, draw to our target surface (convert position) */
    draw_bitmap( &slot->bitmap,
                 slot->bitmap_left,
                 target_height - slot->bitmap_top );

    /* increment pen position */
    pen.x += slot->advance.x;
    pen.y += slot->advance.y;
  }

  show_image();

  FT_Done_Face    ( face );
  FT_Done_FreeType( library );

  return 0;
}

/* EOF */


    运行测试程序    ./example  ./simsun.ttc   fbg    (预先将simsun.ttc字体文件拷贝到当前目录)结果如下:



二、在s3c2440上的安装与使用

1) 开发环境

内核版本: linux-2.6.22

freetype版本: freetype-2.4.10

gcc版本: gcc-3.4.5


2) 步骤

1. 解压缩       tar  xjf  freetype-2.4.10.tar.bz2

2. 配置          ./configure  --host=arm-linux  --prefix=自定义安装目录

3. 编译安装   make  install

    注意: 安装完后会将freetype的头文件和库文件安装到自定义安装目录下

4. 测试用例

    为了避免编译时指定各个参数现在将生成的头文件和库文件拷贝到交叉工具链中,首先进入头文件所在目录并执行命令

           cp  *   /opt/cross-tools/gcc-3.4.5-glibc-2.3.6/arm-linux/include  -rf

            mv  freetype2/freetype/   .

     然后进入库文件所在目录并执行如下命令

           cp  *  /opt/cross-tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib  -rf  -d

     同时将动态库拷贝到文件系统中

           cp  *so*  /nfs/sysfs/fs_s3c2440/lib  -d

    编译测试文件example.c       arm-linux-gcc  example.c  -o  example  -lfreetype  -lm



freetype-2.13.3-windows编译 freetype-2.13.3在windows上使用cmake编译,包含vs2008、vs2015实践编译步骤,同样也支持其他版本的vs。一次可生成freetype的动态库dll、静态库lib,以及mt和md方式编译,可供后续开发灵活使用。 本文操作按照《c&c++开源库编译指南》中内容规范编写,编译环境配置、工具下载、目录规划,及更多其他开源库编译方法请参考该文章。 阅读详情

相关推荐

Ubuntu上编译安装Freetype/Freetype-py

Ubuntu上编译安装Freetype/Freetype-py

qq_44925290的博客 832

Freetype 的安装与使用

采用 手动 和 buildroot 两种方式 安装 freetype,并记录如何使用

weixin_46640184的博客 1万+

FreeType 2 VS2010安装

FreeType 2被设计为一种占用空间小的、高效的、高度可定制的、并且可以产生可移植的高品质输出(符号图像)。可以被用在诸如图像库、展出服务器、字体转换工具、图像文字产生工具等多种其它产品上。

万人往的专栏 4255

freetype简介与测试

简要 从点阵文件中把字母或者汉字的字模取出来在LCD上显示这个方式有个缺点,这个文字的大小就固定了不能够缩放,我们浏览器就可以放大缩小字体,这些字体就成为矢量字体,比如字母A,在矢量字体文件中存放的是若干条闭合曲线的关键点,显示的时候使用数学曲线描绘并连接关键点,然后填充曲线内部空间,这样来实现缩放字体,关键点之间的相互位置是知晓的,而这种数学曲线就称为贝塞尔曲线,贝塞尔曲线在高等数学中有讲到,但不代表我们需要复习贝塞尔曲线,我们可以通过freetype库来处理这些矢量字体,在网上可以搜索到freetyp

月月鸟呀的博客 9015

如何在 Linux 系统下安装 FreeType | FreeType 安装教程

通过本教程,您将学习如何在 Linux 系统下安装 FreeType。如果您的应用程序需要链接 FreeType 库,您需要将 FreeType 库路径添加到 LD_LIBRARY_PATH 环境变量中。在安装 FreeType 之前,您需要在系统上安装一些依赖项。下载最新版本的 FreeType 源代码,并将其解压缩到您希望安装 FreeType 的目录中。至此,您已成功在 Linux 系统上安装了 FreeType。如何在 Linux 系统下安装 FreeType | FreeType 安装教程。

. 4293

freetype 安装

pip install freetype-py import freetype as ft

jacke121的专栏 2861

linux freetype 安装

freetype下载: http://download.savannah.gnu.org/releases/freetype/ 命令行如下所示。 [root@localhost root]# cd /usr/local/src/ //进入软件源码包所在目录 [root@localhost src]# tar zxvf freetype-2.3.5.tar.gz //解包解压到

xdlguozi的博客 7189

手把手学计科--web网页设计

网页的组成:文字、图像和超链接等元素。还可以包括哦音频、视频和动画。分类:静态(固定信息)和动态(与服务器数据库进行实时的数据交换。HTML和CSS 是一种静态网页搭建技术。

Yhvaely的博客 1748

Ubuntu安装freetype

下载freetype软件包 $ .wget http://download.savannah.gnu.org/releases/freetype/freetype-2.4.10.tar.gz 安装freetype最新库文件 步骤一:进入软件源码包所在目录/usr/local/src/中,解压软件包freetype-2.3.5.tar.gz到当前目录freetype-2.3.5下,并进入f...

周大侠的博客 1万+

在Windows11上安装ubuntu版linux系统并实现桌面图形化(WSL)

在Windows11上安装ubuntu版linux系统并实现桌面图形化(WSL),xfce桌面美化、安装google-chrome

NiKoJJ‘s Blog 1万+

密码学:一文读懂数字证书

消息摘要算法用于验证数据完整性服务,对称加密算法和非对称加密算法用于保证数据保密性服务,数字签名算法用于抗否认性服务。数字证书集合了多种密码学算法:自身带有公钥信息,可完成相应的加密/解密操作;同时,还带有数字签名,可鉴别消息来源;且自身带有消息摘要信息,可验证证书的完整性;由于证书本身含有用户身份信息,因而具有认证性。

Shujie 2910

freetype安装

<br /> 安装freetype最新库文件<br />步骤一:进入软件源码包所在目录/usr/local/src/中,解压软件包freetype-2.3.5.tar.gz到当前目录freetype-2.3.5下,并进入freetype-2.3.5目录。命令行如下所示。[root@localhost root]# cd /usr/local/src/        <br />//进入软件源码包所在目录  [root@localhost src]# tar zxvf freetype-2.3.5.tar.g

jimbeing的专栏 5686

Windows系统离线搭建PyTorch深度学习环境全攻略(CUDA+cudnn实战)

本文提供了一份在Windows系统下离线搭建PyTorch深度学习环境的完整实战指南。文章详细讲解了如何在没有网络连接的情况下,正确安装和配置CUDA、cudnn以及PyTorch,并构建独立的Python虚拟环境。重点强调了版本依赖关系的重要性,并提供了从驱动准备到环境验证的每一步操作,旨在帮助用户高效、稳定地部署可复用的GPU深度学习开发环境。

table的专栏 579

php freetype 安装,linux freetype 安装

命令行如下所示。[root@localhost root]# cd /usr/local/src///进入软件源码包所在目录[root@localhost src]# tar zxvf freetype-2.3.5.tar.gz//解包解压到freetype-2.3.5目录[root@localhost src]# cd freetype-2.3.5//进入目录freetype-2.3.5中[ro...

weixin_28704565的博客 369

anaconda安装-超详细版

文章目录一、anaconda安装1.1 anaconda安装地址1.2 安装详细步骤检验安装是否成功更改conda源(后续安装第三方库可以加快速度) 一、anaconda安装 Anaconda 是一个用于科学计算的 Python 发行版,支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包。装anaconda,就不需要单独装python了。 anaconda优点: 1、anaconda里面集成了很多关于python科学计算的第三方库,主要是安装方便,而p

in546的博客 25万+

《寻秦OL》.ani动画逆向解析:二进制结构与Unity重实现

动画文件格式是游戏资源逆向的核心入口,其本质是一组按特定规则组织的二进制数据流。理解魔数识别、字节序、字段对齐与差分编码等底层原理,是解析非标准格式的关键前提。技术价值在于绕过黑盒协议,直接从静态客户端提取可验证的原始语义;典型应用场景包括老游戏复刻、美术资产抢救、引擎跨平台迁移及教学级逆向训练。本文以《寻秦OL》的`.ani`文件为实例,深入剖析其C风格结构布局、GB2312中文命名、16位定点数旋转表示及帧主序差分存储机制,并基于C#在Unity中完成从字节流到AnimationClip的端到端重建,覆

weixin_30368981的博客 640

php 安装freetype,php教程博客 » 安装freetype使php的gd库支持freetype

1、安装freetypeyum install yum install freetype freetype-devel2、重新编译php使其gd库支持freetype原来编译php成功的参数[root@localhost php-5.2.17]# cat ./config.nice#! /bin/sh## Created by configure'./configure' \'--prefix=/...

weixin_32427105的博客 797

华东理工大学计算机预推免面试

华东理工大学预推免面试经验分享

D1379951481的博客 1402

linux 查看freetype安装目录,linux freetype 安装

freetype下载:http://download.savannah.gnu.org/releases/freetype/命令行如下所示。[root@localhost root]# cd /usr/local/src///进入软件源码包所在目录[root@localhost src]# tar zxvf freetype-2.3.5.tar.gz//解包解压到freetype-2.3.5目录...

weixin_42357837的博客 704

[Dify 实战] 如何在内网环境部署 Dify 应用:彻底离线的企业级方案解析

企业内网环境如何离线部署Dify?本文提供详细教程:Dify作为开源AI平台,支持完全离线部署,无需外网访问。文中介绍两种部署方式:推荐使用Docker一键部署,也可选择源码安装定制化方案。重点讲解内网模型配置(支持Ollama/GPT-OSS等)、知识库存储(MinIO/PostgreSQL)及内网代理设置,并给出常见问题排查方法。该方案适用于金融、政府等对数据安全要求高的场景,确保敏感数据不泄露,实现完全本地化的AI应用闭环。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 453

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

php如何安装,php如何安装freetype

php安装freetype的方法:首先执行命令“make && make install”安装freeType;然后安装GD包括freetype;接着切换到PHP ext源码目录;最后重启php服务即可。推荐:《PHP视频教程》PHP Fatal error: Call to undefined function imagettftext()错误提示是指GD库中缺少freetyp...

weixin_29279101的博客 619

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

上一篇: framebuffer
下一篇: libjpeg的安装与使用
Aiden@semidrive
博客等级 码龄14年 110粉丝 58原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值