位图字体库

yup-python的Python项目详细描述


是的![构建状态](https://travis-ci.org/esoma/yup.svg?branch=master)](
https://travis ci.org/esoma/yup


位图字体的[库](libyup)和[应用程序](yupify)。

在x86和x64的Windows和Linux上使用gcc和
clang。



>要构建[库](libyup)和[应用](yupify)的库和[应用](yupify):
```
`>mamakeall
```


<>要运行测试:要运行测试:
``
`
` `
` `
` `












-[yupipip`
`
` ` ` ` ` ` ` ` ` `fy](yupify)取决于freetype(使用2.6.3进行测试)
-[libyup](libyup)没有依赖项

----

**yupify**是一个将字体文件(.ttf、.otf等)转换为[yup库](libyup)可以读取的[format](yup format)的应用程序。

```
_大小页大小填充<;字符
```

-*字体文件路径*是要转换的字体文件的路径
-*字体大小*是要在
-*页面大小*渲染字体的像素大小(宽度
和高度)
-*padding*是渲染的glyph之间的像素数
-*字符*是要渲染的utf8编码字符的字符串

为了方便起见,[utf](..utf)目录有一些预定义的
字符列表,您可以使用它们,最常用的是
[utf/ascii common.txt](../blob/master/utf/ascii common.txt)。此外,还提供了一个python脚本,[utf/generate.py](.utf/generate.py)来轻松地生成新的字符列表。


stdout生成转换后的字体,因此添加
```````……>;font name.yup``保存文件。

----

**libyup**是一个共享库,它提供了一个简单的api,用于读取
[yup format]("yup format")。

/>#包括<;stdio.h>;
包括"yup.h"
int main(int argc,const char*argv[])
{
file*file=fopen("font.yup","rb");
如果(!文件){返回exit_failure;}
yup font*font=yup_new();
if(!字体){返回exit_failure;}
yupprresult yup_result=yup_parse(字体,文件);
if(yup_result!=yup pru gook){return exit_failure;}
fclose(file);
>yup_delete(字体);
retreturn exit_success;
}
`````


````c
>yup yup yup_new();
`````````
>>**yup_new**yup_new**yup_new**yup yup yup_new()>>>yup新对象返回新的指针;如果返回新的**yup font对象,则返回新的**无法,就像**malloc**。

```c
void yup_delete(yup font*font);
````
**yup_delete**释放**yup_new**以前创建的**yupfont**对象,
类似**free**。

```c
typedef int(*yupgetchar)(void*);
typedef int(*yupgetisend)(void*);
yupparseult yup_parse(yup*,void*,yupgetchar,yupgetisend);
```
**yup_parse**使用提供的**yupgetchar**和
**yupgetisend**读取流(*void**),并将该流解析为**yupfont**对象。请注意,
**yupfont**对象中不应包含任何以前的数据。

**yupgetchar**被传递给流,并应返回单个字符。如果
有错误或没有更多字符,则应返回Yup_stream_error。

**YupGetSend**被传递给流,如果流仍有数据,则应返回0;如果流已完成,则应返回1。如果有错误,它应该返回yup_stream_error。

``c
const char*yup_parse_result_string(yupparseresult result)
````
**yup_parse_result_string**获取一个可读字符串,说明调用
**yup_parse**失败的原因。

``c
struct yupfont
{
uint32_t size;
uint32_t page_size;
是glyph*glyphs;
yup page*pages;
};
````
使用**yup\u new**函数创建**yup font**对象,并使用**yup\u delete**函数删除该对象。

-*size*是字体在
-*page\u size*处呈现的大小是字体呈现的纹理的大小同样(宽度和高度都
-*glyphs*是glyphs的链接列表
-*pages*是页面的链接列表

``c
struct yupglyph
{
yupglyph*next;
uint32_t index;
uint64_t dimensions[2];
int64_t offset[2];
int64_t advance;
siz页面索引;
float top_left_uv[2];
float bottom_right_uv[2];
yupkerning*字距调整;
};
`````
a**yupglyph**是字形及其属性的链接列表中的项。

-*next*是链接列表中的下一个**yupglyph**
-*index*是utf8编码由glyph表示的字符的尺寸*是渲染glyph的像素宽度和高度
-*偏移*是从原点渲染glyph的像素数
-*前进*是渲染
glyph时向前移动光标的像素数
-*页索引*是**yuppage**的索引,glyph已被渲染为

-*top_left_uv*是glyph在
页的纹理中的左上角的位置,用uv坐标表示
-*bottom_right_uv*是glyph在
pag中的右下角的位置用紫外坐标表示的e的纹理
-*紧排*是紧排属性的链表

``c
struct yupkerning
{
yupkerning*next;
uint32_t glyph_index;
int64_t offset[2];
};
`````
a**yupkerning**是链表中的一个项,它描述b表示两个标志符号之间的特殊紧排
条件。

-*next*是链接列表中的下一个**yupkerning**
-*glyph_index*是父标志符号左侧的字符的utf8编码
,当呈现时,*offset*应应用于父标志符号时从
原点

``c
结构yuppage
{
yuppage*next;
大小索引;
无符号char*texture;
};
````
a**yuppage**中呈现字形的附加像素数是所有链接页及其属性列表中的项。

-*next*是链接列表中的下一个**yuppage**长度为*且
有*页大小*行

----
yup文件的格式是文本和二进制数据的混合。从概念上讲,它更像是状态机的指令,而不是直接的文件格式。
它的设计使得在标准文本编辑器中很容易打开和检查。

----
python api可以在/py目录中找到。您需要使用:

```c
make python
````

```>生成api需要[toe](https://github.com/esoma/toe/),并且要将
*toe*环境变量设置为toe可执行脚本,

n API工作的路径。

python api中提供了通过opengl进行渲染的[example](/py/yup/examples/gl.py)。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在JSP中添加自定义隐式对象   java MasterMindResource泄漏?   不同的c#java结果加密   java为什么安卓 studio显示“constraintlayout中缺少约束”错误?   java Make Logback将日志打印到文件中   java如何在Google应用程序引擎中设置日期时间?   jeditorpane如何阻止java HTMLEditorKit自动关闭我的标记   返回到Activity onCreate()时,不会调用java函数   java为什么我在这个对象上得到一个NullPointerException?   在java中,如何使用包含数组的参数调用图形方法?   java如何在Play framework 2应用程序中存储Akka参与者列表?   ssh使用java将文件从一个solaris 9复制到另一个solaris 9   网络Java服务器正在等待客户端响应   java Spring mvc从formBackingObject()重定向到页面   java Spark:JavaRDD<Tuple2>到javapairdd<>   java如何动态调用基类中由字符串值指定的子类方法?