// Copyright 2025 International Digital Economy Academy
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
///|
/// Shaping feature constants.
///
/// Ported from `swash/src/shape/feature.rs` (swash is dual-licensed Apache-2.0 OR MIT).
///|
/// Substitution features.
const CCMP : Tag = 0x63636D70 // "ccmp"
///|
const LOCL : Tag = 0x6C6F636C // "locl"
///|
const RVRN : Tag = 0x7276726E // "rvrn"
///|
const LIGA : Tag = 0x6C696761 // "liga"
///|
const CLIG : Tag = 0x636C6967 // "clig"
///|
const RLIG : Tag = 0x726C6967 // "rlig"
///|
const CALT : Tag = 0x63616C74 // "calt"
///|
const LJMO : Tag = 0x6C6A6D6F // "ljmo"
///|
const VJMO : Tag = 0x766A6D6F // "vjmo"
///|
const TJMO : Tag = 0x746A6D6F // "tjmo"
///|
const NUKT : Tag = 0x6E756B74 // "nukt"
///|
const AKHN : Tag = 0x616B686E // "akhn"
///|
const RKRF : Tag = 0x726B7266 // "rkrf"
///|
const HALF : Tag = 0x68616C66 // "half"
///|
const HALN : Tag = 0x68616C6E // "haln"
///|
const VATU : Tag = 0x76617475 // "vatu"
///|
const CJCT : Tag = 0x636A6374 // "cjct"
///|
const ISOL : Tag = 0x69736F6C // "isol"
///|
const INIT : Tag = 0x696E6974 // "init"
///|
const MEDI : Tag = 0x6D656469 // "medi"
///|
const MED2 : Tag = 0x6D656432 // "med2"
///|
const FINA : Tag = 0x66696E61 // "fina"
///|
const FIN2 : Tag = 0x66696E32 // "fin2"
///|
const FIN3 : Tag = 0x66696E33 // "fin3"
///|
const MSET : Tag = 0x6D736574 // "mset"
///|
const RPHF : Tag = 0x72706866 // "rphf"
///|
const PREF : Tag = 0x70726566 // "pref"
///|
const ABVF : Tag = 0x61627666 // "abvf"
///|
const BLWF : Tag = 0x626C7766 // "blwf"
///|
const PSTF : Tag = 0x70737466 // "pstf"
///|
const PRES : Tag = 0x70726573 // "pres"
///|
const ABVS : Tag = 0x61627673 // "abvs"
///|
const BLWS : Tag = 0x626C7773 // "blws"
///|
const PSTS : Tag = 0x70737473 // "psts"
///|
const RCLT : Tag = 0x72636C74 // "rclt"
///|
const VERT : Tag = 0x76657274 // "vert"
///|
const VRT2 : Tag = 0x76727432 // "vrt2"
///|
const RTLM : Tag = 0x72746C6D // "rtlm"
///|
/// Positioning features.
const KERN : Tag = 0x6B65726E // "kern"
///|
const DIST : Tag = 0x64697374 // "dist"
///|
const ABVM : Tag = 0x6162766D // "abvm"
///|
const BLWM : Tag = 0x626C776D // "blwm"
///|
const CURS : Tag = 0x63757273 // "curs"
///|
const MARK : Tag = 0x6D61726B // "mark"
///|
const MKMK : Tag = 0x6D6B6D6B // "mkmk"
///|
/// Arabic joining masks.
const ISOL_MASK : Byte = 1
///|
const INIT_MASK : Byte = 2
///|
const MEDI_MASK : Byte = 4
///|
const FINA_MASK : Byte = 8
///|
const MED2_MASK : Byte = 16
///|
const FIN2_MASK : Byte = 32
///|
const FIN3_MASK : Byte = 64
///|
const NONE_MASK : Byte = 0
///|
/// Hangul jamo masks.
const LJMO_MASK : Byte = 1
///|
const VJMO_MASK : Byte = 2
///|
const TJMO_MASK : Byte = 4