Win32 API 日本語リファレンス
ホームGraphics.DirectWrite › DWRITE_PANOSE

DWRITE_PANOSE

共用体
サイズx64: 10 バイト / x86: 10 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
valuesBYTE10+0+0書体分類値の 10 バイトの配列です。
familyKindBYTE1+0+0テキスト表示用の書体分類を指定する DWRITE_PANOSE_FAMILY_TEXT_DISPLAY の値 (2) です。
text_text_e__Struct10+0+0text 構造体です。
script_script_e__Struct10+0+0script 構造体です。
decorative_decorative_e__Struct10+0+0decorative 構造体です。
symbol_symbol_e__Struct10+0+0symbol 構造体です。

構造体: _text_e__Struct x64 10B / x86 10B

フィールドサイズx64x86説明
familyKindBYTE1+0+0テキスト表示用の書体分類を指定する DWRITE_PANOSE_FAMILY_TEXT_DISPLAY の値 (2) です。
serifStyleBYTE1+1+1テキストのセリフ スタイルを指定する DWRITE_PANOSE_SERIF_STYLE 型の値です。
weightBYTE1+2+2装飾書体の太さを指定する DWRITE_PANOSE_WEIGHT 型の値です。
proportionBYTE1+3+3テキストのプロポーションを指定する DWRITE_PANOSE_PROPORTION 型の値です。
contrastBYTE1+4+4装飾書体のコントラストを指定する DWRITE_PANOSE_CONTRAST 型の値です。
strokeVariationBYTE1+5+5テキストのストローク変化を指定する DWRITE_PANOSE_STROKE_VARIATION 型の値です。
armStyleBYTE1+6+6テキストのアーム スタイルを指定する DWRITE_PANOSE_ARM_STYLE 型の値です。
letterformBYTE1+7+7テキストのレターフォームを指定する DWRITE_PANOSE_LETTERFORM 型の値です。
midlineBYTE1+8+8テキストのミッドラインを指定する DWRITE_PANOSE_MIDLINE 型の値です。
xHeightBYTE1+9+9小文字テキストの相対的なサイズを指定する DWRITE_PANOSE_XHEIGHT 型の値です。

構造体: _script_e__Struct x64 10B / x86 10B

フィールドサイズx64x86説明
familyKindBYTE1+0+0テキスト表示用の書体分類を指定する DWRITE_PANOSE_FAMILY_TEXT_DISPLAY の値 (2) です。
toolKindBYTE1+1+1スクリプトの筆記具の種類を指定する DWRITE_PANOSE_TOOL_KIND 型の値です。
weightBYTE1+2+2装飾書体の太さを指定する DWRITE_PANOSE_WEIGHT 型の値です。
spacingBYTE1+3+3シンボル書体の字間を指定する DWRITE_PANOSE_SPACING 型の値です。
aspectRatioBYTE1+4+4スクリプトのアスペクト比を指定する DWRITE_PANOSE_ASPECT_RATIO 型の値です。
contrastBYTE1+5+5装飾書体のコントラストを指定する DWRITE_PANOSE_CONTRAST 型の値です。
scriptTopologyBYTE1+6+6スクリプトのトポロジを指定する DWRITE_PANOSE_SCRIPT_TOPOLOGY 型の値です。
scriptFormBYTE1+7+7スクリプトのフォームを指定する DWRITE_PANOSE_SCRIPT_FORM 型の値です。
finialsBYTE1+8+8スクリプトのフィニアル (終端処理) を指定する DWRITE_PANOSE_FINIALS 型の値です。
xAscentBYTE1+9+9小文字の相対的なサイズを指定する DWRITE_PANOSE_XASCENT 型の値です。

構造体: _decorative_e__Struct x64 10B / x86 10B

フィールドサイズx64x86説明
familyKindBYTE1+0+0テキスト表示用の書体分類を指定する DWRITE_PANOSE_FAMILY_TEXT_DISPLAY の値 (2) です。
decorativeClassBYTE1+1+1装飾書体のクラスを指定する DWRITE_PANOSE_DECORATIVE_CLASS 型の値です。
weightBYTE1+2+2装飾書体の太さを指定する DWRITE_PANOSE_WEIGHT 型の値です。
aspectBYTE1+3+3装飾書体のアスペクトを指定する DWRITE_PANOSE_ASPECT 型の値です。
contrastBYTE1+4+4装飾書体のコントラストを指定する DWRITE_PANOSE_CONTRAST 型の値です。
serifVariantBYTE1+5+5装飾書体のセリフ バリアントです。
fillBYTE1+6+6装飾書体の塗りつぶしを指定する DWRITE_PANOSE_FILL 型の値です。
liningBYTE1+7+7装飾書体のライニングを指定する DWRITE_PANOSE_LINING 型の値です。
decorativeTopologyBYTE1+8+8装飾のトポロジを指定する DWRITE_PANOSE_DECORATIVE_TOPOLOGY 型の値です。
characterRangeBYTE1+9+9装飾書体の文字範囲を指定する DWRITE_PANOSE_CHARACTER_RANGES 型の値です。

構造体: _symbol_e__Struct x64 10B / x86 10B

フィールドサイズx64x86説明
familyKindBYTE1+0+0テキスト表示用の書体分類を指定する DWRITE_PANOSE_FAMILY_TEXT_DISPLAY の値 (2) です。
symbolKindBYTE1+1+1シンボル セットの種類を指定する DWRITE_PANOSE_SYMBOL_KIND 型の値です。
weightBYTE1+2+2装飾書体の太さを指定する DWRITE_PANOSE_WEIGHT 型の値です。
spacingBYTE1+3+3シンボル書体の字間を指定する DWRITE_PANOSE_SPACING 型の値です。
aspectRatioAndContrastBYTE1+4+4シンボル書体のアスペクト比とコントラストを指定する DWRITE_PANOSE_SYMBOL_ASPECT_RATIO 型の値です。
aspectRatio94BYTE1+5+5シンボル書体のアスペクト比 94 を指定する DWRITE_PANOSE_SYMBOL_ASPECT_RATIO 型の値です。
aspectRatio119BYTE1+6+6シンボル書体のアスペクト比 119 を指定する DWRITE_PANOSE_SYMBOL_ASPECT_RATIO 型の値です。
aspectRatio157BYTE1+7+7シンボル書体のアスペクト比 157 を指定する DWRITE_PANOSE_SYMBOL_ASPECT_RATIO 型の値です。
aspectRatio163BYTE1+8+8シンボル書体のアスペクト比 163 を指定する DWRITE_PANOSE_SYMBOL_ASPECT_RATIO 型の値です。
aspectRatio211BYTE1+9+9シンボル書体のアスペクト比 211 を指定する DWRITE_PANOSE_SYMBOL_ASPECT_RATIO 型の値です。

公式ドキュメント

DWRITE_PANOSE 共用体は、フォントを選択して照合するために IDWriteFont1::GetPanose で使用する書体分類値を記述します。

解説(Remarks)

注意 10 バイトの配列の中で内容が固定されている唯一のエントリは familyKind メンバー (インデックス 0) です。これに続くすべてのエントリは、最初のメンバーの内容に応じて動的に変化する可能性があるためです。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#include <windows.h>

// DWRITE_PANOSE  (x64 10 / x86 10 バイト)
typedef struct DWRITE_PANOSE {
    BYTE values[10];
    BYTE familyKind;
    _text_e__Struct text;
    _script_e__Struct script;
    _decorative_e__Struct decorative;
    _symbol_e__Struct symbol;
} DWRITE_PANOSE;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DWRITE_PANOSE
{
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)] public byte[] values;
    public byte familyKind;
    public _text_e__Struct text;
    public _script_e__Struct script;
    public _decorative_e__Struct decorative;
    public _symbol_e__Struct symbol;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DWRITE_PANOSE
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=10)> Public values() As Byte
    Public familyKind As Byte
    Public text As _text_e__Struct
    Public script As _script_e__Struct
    Public decorative As _decorative_e__Struct
    Public symbol As _symbol_e__Struct
End Structure
import ctypes
from ctypes import wintypes

class DWRITE_PANOSE(ctypes.Structure):
    _fields_ = [
        ("values", ctypes.c_ubyte * 10),
        ("familyKind", ctypes.c_ubyte),
        ("text", _text_e__Struct),
        ("script", _script_e__Struct),
        ("decorative", _decorative_e__Struct),
        ("symbol", _symbol_e__Struct),
    ]
#[repr(C)]
pub struct DWRITE_PANOSE {
    pub values: [u8; 10],
    pub familyKind: u8,
    pub text: _text_e__Struct,
    pub script: _script_e__Struct,
    pub decorative: _decorative_e__Struct,
    pub symbol: _symbol_e__Struct,
}
import "golang.org/x/sys/windows"

type DWRITE_PANOSE struct {
	values [10]byte
	familyKind byte
	text _text_e__Struct
	script _script_e__Struct
	decorative _decorative_e__Struct
	symbol _symbol_e__Struct
}
type
  DWRITE_PANOSE = record
    values: array[0..9] of Byte;
    familyKind: Byte;
    text: _text_e__Struct;
    script: _script_e__Struct;
    decorative: _decorative_e__Struct;
    symbol: _symbol_e__Struct;
  end;
const DWRITE_PANOSE = extern struct {
    values: [10]u8,
    familyKind: u8,
    text: _text_e__Struct,
    script: _script_e__Struct,
    decorative: _decorative_e__Struct,
    symbol: _symbol_e__Struct,
};
type
  DWRITE_PANOSE {.bycopy.} = object
    values: array[10, uint8]
    familyKind: uint8
    text: _text_e__Struct
    script: _script_e__Struct
    decorative: _decorative_e__Struct
    symbol: _symbol_e__Struct
struct DWRITE_PANOSE
{
    ubyte[10] values;
    ubyte familyKind;
    _text_e__Struct text;
    _script_e__Struct script;
    _decorative_e__Struct decorative;
    _symbol_e__Struct symbol;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DWRITE_PANOSE サイズ: 10 バイト(x64)
dim st, 3    ; 4byte整数×3(構造体サイズ 10 / 4 切り上げ)
; values : BYTE (+0, 10byte)  varptr(st)+0 を基点に操作(10byte:入れ子/配列)
; familyKind : BYTE (+0, 1byte)  poke st,0,値  /  値 = peek(st,0)
; text : _text_e__Struct (+0, 10byte)  varptr(st)+0 を基点に操作(10byte:入れ子/配列)
; script : _script_e__Struct (+0, 10byte)  varptr(st)+0 を基点に操作(10byte:入れ子/配列)
; decorative : _decorative_e__Struct (+0, 10byte)  varptr(st)+0 を基点に操作(10byte:入れ子/配列)
; symbol : _symbol_e__Struct (+0, 10byte)  varptr(st)+0 を基点に操作(10byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global DWRITE_PANOSE
    #field byte values 10
    #field byte familyKind
    #field _text_e__Struct text
    #field _script_e__Struct script
    #field _decorative_e__Struct decorative
    #field _symbol_e__Struct symbol
#endstruct

stdim st, DWRITE_PANOSE        ; NSTRUCT 変数を確保
st->familyKind = 100
mes "familyKind=" + st->familyKind