freetype demo 运行

背景:java现在没活了 让我研究freetype 对嵌入式和c几乎零基础
问题:如何运行起一个最简单的freetype demo (无论是windows还是linux)

“Devil组”引证GPT后的撰写:

  • 下载FreeType库
    首先,您需要下载FreeType库的最新版本。
  • 安装FreeType库
    解压下载的源代码,并进入解压后的文件夹。在终端中执行以下命令:
    ```
    ./configure
    make
    sudo make install
这将安装FreeType库。

创建示例程序
创建一个新的源代码文件,例如"demo.c",并将以下代码复制到文件中:

#include <ft2build.h>
#include FT_FREETYPE_H

int main(int argc, char *argv[]) {
FT_Library library;
FT_Error error = FT_Init_FreeType(&library);
if (error) {
printf("Error initializing FreeType library.\n");
return -1;
}
printf("FreeType library initialized successfully.\n");
FT_Done_FreeType(library);
return 0;
}

编译示例程序
在终端中使用以下命令编译示例程序:

gcc demo.c -lfreetype -o demo

运行示例程序
运行编译后的可执行文件:

./demo

```
如果一切正常,将输出 "FreeType library initialized successfully."。

请注意,此示例程序只是一个简单的初始化示例,它只是演示如何使用FreeType库的一小部分功能。如果您要使用更多的FreeType功能,您需要了解FreeType库的更多内容并修改示例代码。

以下是一个最简单的Freetype Demo的示例代码,可用于Windows或Linux平台。这个Demo会加载一个TrueType字体文件,并显示一段文本。


#include <ft2build.h>
#include FT_FREETYPE_H

#include <iostream>

int main() {
    FT_Library library;
    FT_Face face;

    if (FT_Init_FreeType(&library)) {
        std::cerr << "Failed to initialize FreeType library" << std::endl;
        return -1;
    }

    if (FT_New_Face(library, "arial.ttf", 0, &face)) {
        std::cerr << "Failed to load font" << std::endl;
        return -1;
    }

    if (FT_Set_Pixel_Sizes(face, 0, 48)) {
        std::cerr << "Failed to set font size" << std::endl;
        return -1;
    }

    FT_GlyphSlot glyphSlot = face->glyph;

    for (char c = 32; c < 128; c++) {
        if (FT_Load_Char(face, c, FT_LOAD_RENDER)) {
            std::cerr << "Failed to load glyph for character " << c << std::endl;
            continue;
        }

        std::cout << "Character: " << c << std::endl;
        std::cout << "Glyph Bitmap:" << std::endl;

        for (int y = 0; y < glyphSlot->bitmap.rows; y++) {
            for (int x = 0; x < glyphSlot->bitmap.width; x++) {
                std::cout << (glyphSlot->bitmap.buffer[y * glyphSlot->bitmap.pitch + x] ? "#" : " ");
            }
            std::cout << std::endl;
        }

        std::cout << "-----------------------" << std::endl;
    }

    FT_Done_Face(face);
    FT_Done_FreeType(library);

    return 0;
}

这个Demo会加载一个名为"arial.ttf"的TrueType字体文件,然后对ASCII码表中32到127的字符,逐个进行渲染并输出对应的Glyph Bitmap。

在Windows平台下,你需要使用Visual Studio编译这个程序。你可以在Visual Studio中创建一个新的控制台应用程序项目,然后将以上代码复制到main.cpp文件中,并将arial.ttf字体文件放在项目文件夹中。最后点击生成即可。

在Linux平台下,你可以使用以下命令编译这个程序:


g++ main.cpp -o freetype-demo -lfreetype

这个命令会将源文件编译为一个名为freetype-demo的可执行文件,并链接Freetype库。

无论是在Windows还是Linux平台下,你可以在终端中运行这个程序,然后查看输出结果。
望采纳🥰🥰🥰