Offres Produits Études de cas Expertises À propos Nous contacter Blog Offres d'emploi
FR EN

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.

ComposantTaille 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 :

  1. Famille Noto/Inter par script pour la langue active si enregistrée
  2. Inter pour le latin si disponible
  3. QGuiApplication::font() si compatible avec le système d'écriture actif
  4. 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.

SourceLicenceUtilisé dans
Base Unicode UnihanUnicode License v3pinyin*.trie, cangjie*.trie, zhuyin.trie, japanese.trie
CC-CEDICTCC BY-SA 3.0pinyin.trie, pinyin-hant.trie
FrequencyWords (OpenSubtitles 2018)CC BY-SA 4.0Tous les prediction-*.pred, tries de translittération, bigram-*.bigram
Titres Wikipedia KannadaCC BY-SA 4.0transliteration-kn.trie, bigram-kn.bigram
rime-essayLGPL-3.0Statistiques de fréquence chinoises (classements uniquement)
mecab-ipadic 2.7.0NAIST Licensejapanese.trie (repli), matrix-ja.mtx
Dictionnaire Mozc OSSBSD 3-Clause + NAISTjapanese.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épertoire qml/ de Qt.
  • Emplacement personnalisé : définissez QML2_IMPORT_PATH.
export QML2_IMPORT_PATH=/opt/myapp/lib/qml

Ordre de recherche des dictionnaires

  1. Variable d'environnement LNVK_DICT_DIR
  2. LNVK_DICT_DIR à la compilation
  3. <app_dir>/../share/lnvirtualkeyboard/dictionaries/<file>
  4. <app_dir>/../data/dictionaries/<file>
  5. <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 :

  1. LNVK_FONTS_DIR (variable d'environnement)
  2. LNVK_FONTS_DIR à la compilation
  3. <app_dir>/../share/lnvirtualkeyboard/fonts/
  4. <app_dir>/../fonts/
  5. <app_dir>/fonts/
  6. Remontée depuis <app_dir> à la recherche d'un fonts/ contenant Inter-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) :

CodeLangueCodeLangue
arArabelvLetton
beBiélorussemkMacédonien
bgBulgaremtMaltais
bnBengalinbNorvégien Bokmål
bsBosniaquenlNéerlandais
caCatalanplPolonais
csTchèqueptPortugais
cyGalloisroRoumain
daDanoisruRusse
deAllemandskSlovaque
elGrecslSlovène
enAnglaissqAlbanais
esEspagnolsrSerbe
etEstoniensvSuédois
fiFinnoistaTamoul
frFrançaisteTélougou
gaIrlandaisthThaï
glGalicientrTurc
heHébreuukUkrainien
hiHindi (translittération)viVietnamien
hi-DevaHindi (Devanagari)zh-HansChinois simplifié (Pinyin)
hrCroatezh-HantChinois traditionnel (Pinyin)
huHongroiszh-Hant-HKChinois Hong Kong (Cangjie)
hyArménienzh-Hant-TWChinois Taïwan (Zhuyin)
isIslandaisjaJaponais (Romaji)
itItalienja-12keyJaponais (12 touches)
kaGéorgienkoCoréen
knKannadaltLituanien