tecnickcom/tc-lib-unicode
Composer 安装命令:
composer require tecnickcom/tc-lib-unicode
包简介
PHP library containing Unicode methods
README 文档
README
UTF-8 and Unicode processing utilities, including bidirectional text handling.
💖 Part of the tc-lib-pdf / TCPDF ecosystem (100M+ installs). Sponsor its maintenance →
Overview
tc-lib-unicode provides Unicode conversion helpers and bidirectional algorithm support for robust multilingual text processing.
It is built to handle multilingual text paths where normalization, code-point handling, and bidirectional ordering directly affect rendering quality. By isolating Unicode-heavy operations, dependent libraries can keep text processing accurate and easier to audit.
| Namespace | \Com\Tecnick\Unicode |
| Author | Nicola Asuni info@tecnick.com |
| License | GNU LGPL v3 - see LICENSE |
| API docs | https://tcpdf.org/docs/srcdoc/tc-lib-unicode |
| Packagist | https://packagist.org/packages/tecnickcom/tc-lib-unicode |
Features
Unicode Utilities
- UTF-8 character and ordinal conversion helpers
- String/character array transformations
- Integration-ready conversion methods for document engines
Bidirectional Support
- Unicode Bidirectional Algorithm implementation
- Right-to-left and mixed-direction text processing
- Supporting shaping/step logic for complex scripts
Character Substitution
- Context-sensitive codepoint-level substitution via
Substitution::replaceChars() - Thai — repositions leading vowels (Sara E/AE/O/AI, U+0E40–U+0E44, U+0E4D) to follow their base consonant, matching PDF visual-order glyph streams
- Devanagari — moves left-positional matras (U+093F) to precede their base consonant cluster, including conjuncts joined by Virama (U+094D)
- Hangul — composes Hangul Jamo sequences (U+1100–U+11FF, U+A960–U+A97F, U+D7B0–U+D7FF) into precomposed syllables (U+AC00–U+D7A3) per Unicode Standard §3.12
Requirements
- PHP 8.2 or later
- Extension:
mbstring - Composer
Installation
composer require tecnickcom/tc-lib-unicode
Quick Start
<?php require_once __DIR__ . '/vendor/autoload.php'; $bidi = new \Com\Tecnick\Unicode\Bidi('hello ', null, null, 'R', false); echo $bidi->getString();
Character substitution
Substitution::replaceChars() takes an array of Unicode codepoints and returns a transformed array with script-specific substitutions applied. It is a pure codepoint-level transform with no font or PDF dependency.
<?php require_once __DIR__ . '/vendor/autoload.php'; $sub = new \Com\Tecnick\Unicode\Substitution(); // Thai: leading vowel repositioned after its base consonant // Logical order: [U+0E40 SARA E, U+0E01 KO KAI] // Visual order: [U+0E01 KO KAI, U+0E40 SARA E] $result = $sub->replaceChars([0x0E40, 0x0E01]); // $result === [0x0E01, 0x0E40] // Devanagari: left matra repositioned before its base consonant cluster // Logical order: [U+0915 KA, U+093F VOWEL SIGN I] // Visual order: [U+093F VOWEL SIGN I, U+0915 KA] $result = $sub->replaceChars([0x0915, 0x093F]); // $result === [0x093F, 0x0915] // Hangul: Jamo composed into a precomposed syllable // [U+1100 KIYEOK, U+1161 JUNGSEONG A, U+11A8 JONGSEONG KIYEOK] → [U+AC01 각] $result = $sub->replaceChars([0x1100, 0x1161, 0x11A8]); // $result === [0xAC01]
Supported scripts and Unicode ranges
| Script | Unicode range(s) | Transformation |
|---|---|---|
| Thai | U+0E00–U+0E7F | Leading vowels repositioned after base consonant |
| Devanagari | U+0900–U+097F | Left matras repositioned before consonant cluster |
| Hangul Jamo | U+1100–U+11FF, U+A960–U+A97F, U+D7B0–U+D7FF | Jamo composed to precomposed syllables (U+AC00–U+D7A3) |
Codepoints belonging to unsupported scripts are passed through unchanged.
Development
make deps
make help
make qa
make server
make server starts the local PHP development server for the example/ directory on http://localhost:8000.
Use a custom port with make server PORT=8080.
Packaging
make rpm make deb
For system packages, bootstrap with:
require_once '/usr/share/php/Com/Tecnick/Unicode/autoload.php';
Contributing
Contributions are welcome. Please review CONTRIBUTING.md, CODE_OF_CONDUCT.md, and SECURITY.md.
tecnickcom/tc-lib-unicode 适用场景与选型建议
tecnickcom/tc-lib-unicode 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 763.67k 次下载、GitHub Stars 达 11, 最近一次更新时间为 2015 年 09 月 12 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「pdf」 「utf-8」 「font」 「unicode」 「tc-lib-unicode」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 tecnickcom/tc-lib-unicode 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 tecnickcom/tc-lib-unicode 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 tecnickcom/tc-lib-unicode 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
tfpdf
FontAwesome5 for Magento2
PHP SVG font parser
Removes invalid UTF-8 characters from the given text
Country Flag Emoji for PHP
An asset bundle for Font Awesome icons with Bootstrap 4.
统计信息
- 总下载量: 763.67k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 11
- 点击次数: 32
- 依赖项目数: 2
- 推荐数: 1
其他信息
- 授权协议: LGPL-3.0-or-later
- 更新时间: 2015-09-12