Déploiement
Contenu du package
L'archive de release contient :
LNVK/
├── bin/
│ └── lndict-compiler (utilitaire de compilation de dictionnaires)
├── include/lnvk/
│ └── lnvk.h (#include <lnvk>)
├── integration/
│ ├── LNVKConfig.cmake
│ └── lnvirtualkeyboard.pri
├── qml/Ln/VirtualKeyboard/
│ ├── liblnvirtualkeyboardplugin.so
│ └── qmldir
├── share/lnvirtualkeyboard/dictionaries/
│ ├── *.trie # dictionnaires IME
│ ├── *.pred # prédiction de mots
│ ├── *.bigram # modèles de langue bigrammes
│ ├── *.prism # prisme Pinyin
│ └── *.mtx # matrice de coût de connexion
├── share/lnvirtualkeyboard/fonts/
│ ├── Inter-Variable.ttf
│ ├── NotoSans*.ttf
│ └── NotoSansCJK*.otf
└── share/lnvirtualkeyboard/licenses/
├── OFL.txt
├── fonts-NOTICE.md
├── dictionaries-NOTICE.md
└── (autres textes de licence tiers)
Empreinte à l'installation
Tailles sur disque pour une build Release. Les fichiers dictionnaire sont mappés en mémoire à l'exécution ; ils n'augmentent pas l'empreinte heap du clavier au repos.
| Composant | Taille sur disque |
|---|---|
| Plugin QML | ~910 Kio |
| Tous les binaires dictionnaire | ~80,5 Mio |
Anglais uniquement (en) | ~1021 Kio |
Japonais (ja, ja-12key) | ~15,1 Mio |
Chinois simplifié (zh-Hans) | ~7,8 Mio |
Passez LANGUAGES à ln_virtual_keyboard_deploy ou LNVK_LANGUAGES en qmake pour n'embarquer que les dictionnaires des langues actives (voir Sélectionner les langues ci-dessous). Liste des profils et fichiers par langue : Langues.
Les dispositions, thèmes et composants QML sont embarqués dans la bibliothèque partagée via resources.qrc. Les polices embarquées sont optionnelles : elles sont livrées en fichiers .ttf / .otf séparés sous share/lnvirtualkeyboard/fonts/ et enregistrées au chargement du plugin si ce répertoire est présent.
Licences tierces
La release inclut des polices tierces (share/lnvirtualkeyboard/fonts/) et des données de dictionnaire (share/lnvirtualkeyboard/dictionaries/). Les textes de licence et NOTICEs sont sous share/lnvirtualkeyboard/licenses/. Si vous redistribuez les polices ou dictionnaires embarqués, incluez ces fichiers de licence.
Polices (optionnelles)
Les polices embarquées sont une commodité, pas une obligation. Si FontPaths ne trouve aucun répertoire de polices au chargement, l'enregistrement est ignoré et le clavier fonctionne normalement.
Lorsqu'elles sont présentes, le plugin les enregistre via QFontDatabase::addApplicationFont pendant l'initialisation du plugin.
Utiliser vos propres polices : appelez FontPaths::setHostFontFiles avant engine.load().
#include <lnvk>
lenewt::FontPaths::setHostFontFiles({
"/opt/myapp/fonts/Inter-Variable.ttf",
"/opt/myapp/fonts/NotoSansArabic-Regular.ttf",
"/opt/myapp/fonts/NotoSansCJKsc-Regular.otf",
});
Quand setHostFontFiles est appelé, la découverte des polices embarquées n'est pas utilisée.
En QML : font.family: Lnvk.effectiveFontFamily.
Ordre de résolution de la famille de police :
- Famille Noto/Inter par script pour la langue active si enregistrée
Interpour le latin si disponibleQGuiApplication::font()si compatible avec le système d'écriture actif- Chaîne vide → police par défaut de la plateforme Qt
Si vous redistribuez les polices embarquées, incluez OFL.txt et fonts-NOTICE.md.
Données de dictionnaire
Les dictionnaires compilés proviennent des sources ouvertes ci-dessous. L'attribution par artefact est dans dictionaries-NOTICE.md.
| Source | Licence | Utilisé dans |
|---|---|---|
| Base Unicode Unihan | Unicode License v3 | pinyin*.trie, cangjie*.trie, zhuyin.trie, japanese.trie |
| CC-CEDICT | CC BY-SA 3.0 | pinyin.trie, pinyin-hant.trie |
| FrequencyWords (OpenSubtitles 2018) | CC BY-SA 4.0 | Tous les prediction-*.pred, tries de translittération, bigram-*.bigram |
| Titres Wikipedia Kannada | CC BY-SA 4.0 | transliteration-kn.trie, bigram-kn.bigram |
| rime-essay | LGPL-3.0 | Statistiques de fréquence chinoises (classements uniquement) |
| mecab-ipadic 2.7.0 | NAIST License | japanese.trie (repli), matrix-ja.mtx |
| Dictionnaire Mozc OSS | BSD 3-Clause + NAIST | japanese.trie (préféré), matrix-ja.mtx |
Les fichiers de dictionnaire incorporant des entrées CC BY-SA sont distribués sous CC BY-SA 4.0, uniquement pour les fichiers de données.
Compiler des dictionnaires de prédiction personnalisés
Le package inclut bin/lndict-compiler pour générer des fichiers .pred sans recompiler le projet.
# Depuis la racine de votre package LNVK
./bin/lndict-compiler --flat my-words.txt prediction-en-custom.pred
Déployez les fichiers .pred dans share/lnvirtualkeyboard/dictionaries/. Voir le guide Configuration.
Intégration CMake
Ajoutez le répertoire release à CMAKE_PREFIX_PATH et utilisez find_package :
cmake_minimum_required(VERSION 3.16)
project(MyApp LANGUAGES CXX)
find_package(Qt6 REQUIRED COMPONENTS Quick)
find_package(LNVK REQUIRED)
add_executable(myapp main.cpp)
target_link_libraries(myapp PRIVATE Qt6::Quick)
ln_virtual_keyboard_deploy(myapp)
ln_virtual_keyboard_deploy(myapp FONTS)
ln_virtual_keyboard_deploy(myapp LANGUAGES fr en FONTS)
ln_virtual_keyboard_deploy copie le plugin QML et les dictionnaires à côté de votre binaire :
<app_dir>/../qml/Ln/VirtualKeyboard/
liblnvirtualkeyboardplugin.*
qmldir
<app_dir>/../share/lnvirtualkeyboard/dictionaries/
(fichiers dictionnaire)
<app_dir>/../share/lnvirtualkeyboard/fonts/ (optionnel, si FONTS est passé)
Les polices sont optionnelles : passez FONTS ou appelez FontPaths::setHostFontFiles depuis C++.
cmake -B build -DCMAKE_PREFIX_PATH="/chemin/vers/LNVK"
cmake --build build
Sélectionner les langues
ln_virtual_keyboard_deploy(myapp LANGUAGES fr en)
Intégration qmake
include(/chemin/vers/LNVK/integration/lnvirtualkeyboard.pri)
Pour ne déployer que certaines langues :
LNVK_LANGUAGES = fr en
include(/chemin/vers/LNVK/integration/lnvirtualkeyboard.pri)
Polices embarquées optionnelles :
LNVK_DEPLOY_FONTS = 1
include(/chemin/vers/LNVK/integration/lnvirtualkeyboard.pri)
Déploiement manuel
Fichiers plugin
- Chemin d'import QML de Qt : copiez
Ln/dans le répertoireqml/de Qt. - Emplacement personnalisé : définissez
QML2_IMPORT_PATH.
export QML2_IMPORT_PATH=/opt/myapp/lib/qml
Ordre de recherche des dictionnaires
- Variable d'environnement
LNVK_DICT_DIR LNVK_DICT_DIRà la compilation<app_dir>/../share/lnvirtualkeyboard/dictionaries/<file><app_dir>/../data/dictionaries/<file><app_dir>/data/dictionaries/<file>
Fichiers de polices (optionnels)
<app_dir>/../share/lnvirtualkeyboard/fonts/
Inter-Variable.ttf
NotoSans*.ttf
NotoSansCJK*.otf
Ordre de recherche FontPaths :
LNVK_FONTS_DIR(variable d'environnement)LNVK_FONTS_DIRà la compilation<app_dir>/../share/lnvirtualkeyboard/fonts/<app_dir>/../fonts/<app_dir>/fonts/- Remontée depuis
<app_dir>à la recherche d'unfonts/contenantInter-Variable.ttf
Déploiement embarqué
/usr/lib/qml/Ln/VirtualKeyboard/
liblnvirtualkeyboardplugin.so
qmldir
/usr/share/lnvirtualkeyboard/dictionaries/
(fichiers dictionnaire sélectionnés)
/usr/share/lnvirtualkeyboard/fonts/ (optionnel)
Définissez LNVK_FONTS_DIR uniquement si vous utilisez les polices embarquées.
Compatibilité Qt
Le plugin cible Qt 5 et Qt 6. Build pour Qt 5.15 à toute version mineure de Qt 6.x. Les versions Qt 5 antérieures à 5.15 sont supportées sur demande.
Codes de langue disponibles
Passez ces codes à LANGUAGES (CMake) ou LNVK_LANGUAGES (qmake) :
| Code | Langue | Code | Langue |
|---|---|---|---|
ar | Arabe | lv | Letton |
be | Biélorusse | mk | Macédonien |
bg | Bulgare | mt | Maltais |
bn | Bengali | nb | Norvégien Bokmål |
bs | Bosniaque | nl | Néerlandais |
ca | Catalan | pl | Polonais |
cs | Tchèque | pt | Portugais |
cy | Gallois | ro | Roumain |
da | Danois | ru | Russe |
de | Allemand | sk | Slovaque |
el | Grec | sl | Slovène |
en | Anglais | sq | Albanais |
es | Espagnol | sr | Serbe |
et | Estonien | sv | Suédois |
fi | Finnois | ta | Tamoul |
fr | Français | te | Télougou |
ga | Irlandais | th | Thaï |
gl | Galicien | tr | Turc |
he | Hébreu | uk | Ukrainien |
hi | Hindi (translittération) | vi | Vietnamien |
hi-Deva | Hindi (Devanagari) | zh-Hans | Chinois simplifié (Pinyin) |
hr | Croate | zh-Hant | Chinois traditionnel (Pinyin) |
hu | Hongrois | zh-Hant-HK | Chinois Hong Kong (Cangjie) |
hy | Arménien | zh-Hant-TW | Chinois Taïwan (Zhuyin) |
is | Islandais | ja | Japonais (Romaji) |
it | Italien | ja-12key | Japonais (12 touches) |
ka | Géorgien | ko | Coréen |
kn | Kannada | lt | Lituanien |