Hamza เป็นส่วนหัวอย่างเดียวรวดเร็วและพกพา C99 Unicode/Opentype การสร้างและการแสดงผล มันถูกออกแบบมาให้เป็น shaper ขนาดเล็กพกพาและปรับให้เหมาะสมซึ่งง่ายต่อการรวมเข้ากับโครงการที่มีอยู่ ด้านล่างนี้เป็นภาพของสตริงภาษาอาหรับสั้น ๆ ที่มีไลบรารีนี้โดยใช้ตัวอักษรที่ค่อนข้างซับซ้อนสีแบบสุ่มจะถูกกำหนดให้กับแต่ละสัญลักษณ์ 
Hamza รวมโปรแกรมไฟล์เดียว update_ucd_ftp และ generate_ucd_headers ครั้งแรกจะดึงไฟล์ UCD ที่จำเป็นจากเซิร์ฟเวอร์ FTP ที่ ftp.unicode.org และต้องใช้ Curl ครั้งที่สองสร้างส่วนหัว C ที่ดีที่สุดจากไฟล์ UCD เหล่านั้น โปรแกรมทั้งสองนี้ใช้ประโยชน์จากไลบรารี Posix Regex สำหรับการกรองและการแยกวิเคราะห์
ดาวน์โหลด UCD txt ซึ่งอาจใช้เวลาไม่กี่นาทีดังนั้นจะทำเฉพาะในกรณีที่ส่วนหัว UCD ล้าสมัย:
./build/update_ucd_ftpสร้างไฟล์ส่วนหัวสำหรับเวอร์ชัน UCD:
./build/generate_ucd_headers ในการเริ่มต้นใช้ Hamza ให้กำหนด HZ_IMPLEMENTATION ก่อนรวม hz.h คุณสามารถเลือกกำหนด HZ_NO_STDLIB สำหรับ นอกจากนี้ยังจำเป็นต้องรวมส่วนหัวสำหรับ UCD สำหรับเวอร์ชันที่คุณต้องการ เราจะอธิบายในภายหลังว่าสิ่งเหล่านี้ถูกสร้างขึ้นอย่างไรและคุณสามารถอัปเดตด้วยตัวเองได้อย่างไร
#define HZ_IMPLEMENTATION
#include <hz/hz_ucd_15_0_0.h>
#include <hz/hz.h> ในการเริ่มต้นไลบรารีก่อนเติมโครงสร้าง hz_config_t และโทร hz_init :
hz_config_t cfg = {
};
if ( hz_init ( & cfg ) != HZ_OK ) {
fprintf ( stderr , "%sn" , "Failed to initialize Hamza!" );
return -1 ;
} ถัดไปก่อนที่คุณจะสามารถกำหนดข้อความใด ๆ คุณต้องให้ข้อมูลแบบอักษร คุณต้องการโหลดตัวอักษรลงในโครงสร้าง stbtt_fontinfo Hamza รวมถึง stb_truetype.h ซึ่งมีจุดประสงค์เพื่อใช้ในการอ่านแบบอักษร หากต้องการสร้าง hz_font_t จากแบบอักษร STBTT เขียน:
hz_font_t * font = hz_stbtt_font_create ( & fontinfo ); Hamza มีจุดมุ่งหมายเพื่อให้ผู้ใช้จัดการการจัดสรรหน่วยความจำและข้อมูลให้มากที่สุด ก่อนที่จะสร้างข้อมูลตัวอักษรจะต้องแยกวิเคราะห์เป็นโครงสร้าง hz_font_data_t สิ่งนี้เก็บข้อมูลตาราง Opentype ทั้งหมดที่จำเป็นสำหรับการสร้างแบบอักษรที่เฉพาะเจาะจง ฟังก์ชั่น hz_font_data_init ใช้เป็นอาร์กิวเมนต์จำนวนหน่วยความจำที่จะจัดสรรเพื่อเก็บข้อมูลของตัวอักษรนั้น:
hz_font_data_t font_data ;
hz_font_data_init ( & font_data , 1024 * 1024 ); // 1MiB
hz_font_data_load ( & font_data , font );สร้าง shaper และเริ่มต้นมัน:
hz_shaper_t shaper ;
hz_shaper_init ( & shaper );ตั้งค่าพารามิเตอร์ที่ต้องการของ Shaper:
hz_shaper_set_direction ( & shaper , HZ_DIRECTION_RTL );
hz_shaper_set_script ( & shaper , HZ_SCRIPT_ARABIC );
hz_shaper_set_language ( & shaper , HZ_LANGUAGE_ARABIC );ตั้งค่าคุณสมบัติการพิมพ์ของ Shaper:
hz_feature_t features [] = {
HZ_FEATURE_ISOL ,
HZ_FEATURE_INIT ,
HZ_FEATURE_MEDI ,
HZ_FEATURE_FINA ,
HZ_FEATURE_RLIG ,
HZ_FEATURE_LIGA ,
};
hz_shaper_set_features ( & shaper , features , sizeof ( features )/ sizeof ( features [ 0 ]));สร้าง Glyph Buffer and Shape!
hz_buffer_t buffer ;
hz_buffer_init ( & buffer );
hz_shape_sz1 ( & shaper , & font_data , HZ_ENCODING_UTF8 , "السلام عليكم" , & buffer );หลังจากนี้คุณสามารถเข้าถึงข้อมูล Glyph ของบัฟเฟอร์และแสดงผล หลังจากที่คุณทำทุกสิ่งที่คุณต้องทำ
hz_buffer_release ( & buffer );
hz_font_data_release ( & font_data );
hz_font_destroy ( font );
hz_deinit ();.aat .woff และ .woff2 รูปแบบ Hamza ได้รับใบอนุญาตภายใต้ LGPLV3