Home

Awesome

KAGE engine

npm badge

KAGE/engine (Kanji-glyph Automatic Generating Engine) is a set of scripts that renders kanji glyphs described in KAGE format. It is a part of the KAGE system, which also includes a glyph design editor, a TrueType font generator, etc.

くろごま(利用者:twe)が改変したKAGEエンジンです。
This repository contains the KAGE engine modified by @kurgm (a.k.a. User:twe).

デモページ Demo page

Usage

Installation

You can install the package in your project using npm:

$ npm install @kurgm/kage-engine

Then you can use import or require to load the module in your code:

// ES style
import { Kage, Polygons } from "@kurgm/kage-engine";

// CommonJS style
const { Kage, Polygons } = require("@kurgm/kage-engine");

Alternatively, you can load the bundled file from a CDN in your web page:

<script src="https://unpkg.com/@kurgm/kage-engine@0.6.0/dist/kage.min.js"></script>

This will define only Kage in the global scope. You can access Polygons and Buhin as Kage's properties:

const Polygons = Kage.Polygons;
const Buhin = Kage.Buhin;

Bundled ESM file is also available:

<script type="module">
  import { Kage, Polygons } from "https://unpkg.com/@kurgm/kage-engine@0.6.0/dist/kage.min.mjs";

  // Your code goes here
</script>

Drawing glyphs

See docs for more detailed API documentation (of development version).

// First create a Kage instance
const kage = new Kage();

// Put glyph data to draw into `kage.kBuhin`
kage.kBuhin.push("u6f22", "99:150:0:9:12:73:200:u6c35-07:0:-10:50$99:0:0:54:10:190:199:u26c29-07");

// Put data of included components as well
kage.kBuhin.push("u6c35-07", "2:7:8:42:12:99:23:124:35$2:7:8:20:62:75:71:97:85$2:7:8:12:123:90:151:81:188$2:2:7:63:144:109:118:188:51");
kage.kBuhin.push("u26c29-07", "1:0:0:18:29:187:29$1:0:0:73:10:73:48$1:0:0:132:10:132:48$1:12:13:44:59:44:87$1:2:2:44:59:163:59$1:22:23:163:59:163:87$1:2:2:44:87:163:87$1:0:0:32:116:176:116$1:0:0:21:137:190:137$7:32:7:102:59:102:123:102:176:10:190$2:7:0:105:137:126:169:181:182");

// Draw the glyph in an instance of `Polygons`
const polygons = new Polygons();
kage.makeGlyph(polygons, "u6f22");

// Convert to SVG and print it to the console
console.log(polygons.generateSVG());

There are also other samples available in the samples directory.

改変したところ

フォーク元 (kamichikoichi/kage-engine) から改変したところを以下に述べます。

1. API仕様の変更

2. コードの整理

型チェックを行うため、コード全体をTypeScriptに書き換えました。

その上で、

ただしコードの整理は、さまざまな入力に対して前と“ほぼ”変わらない出力が得られるように行っています。(詳しくは出力比較用スクリプトを見てください)

ただし、書体は明朝体で書体パラメータはデフォルト値から変更されないという仮定を置いているほか、入力データに対し以下の仮定を置いており、これら仮定に反する場合出力が大きく変わる可能性があります。

整理の過程で以下に挙げるようなバグ?が見つかっていますが、非漢字グリフに影響が出る可能性があるためわざと挙動は変えないようにしています。修正は影響を精査してから行う予定です。

などなど……(GlyphWiki:バグ報告にもKAGEエンジンのバグが報告されています)

License / ライセンス

GPL v3