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

PANOSE

構造体
サイズx64: 10 バイト / x86: 10 バイト

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

フィールド

フィールドサイズx64x86説明
bFamilyTypePAN_FAMILY_TYPE1+0+0

ラテン文字フォントの場合、次のいずれかの値です。

意味
PAN_ANY 任意
PAN_NO_FIT 該当なし
PAN_FAMILY_TEXT_DISPLAY テキストおよびディスプレイ
PAN_FAMILY_SCRIPT スクリプト体
PAN_FAMILY_DECORATIVE 装飾体
PAN_FAMILY_PICTORIAL 絵文字体
bSerifStylePAN_SERIF_STYLE1+1+1

セリフのスタイルです。ラテン文字フォントの場合、次のいずれかの値です。

意味
PAN_ANY 任意
PAN_NO_FIT 該当なし
PAN_SERIF_COVE コーブ
PAN_SERIF_OBTUSE_COVE 鈍角コーブ
PAN_SERIF_SQUARE_COVE 角形コーブ
PAN_SERIF_OBTUSE_SQUARE_COVE 鈍角の角形コーブ
PAN_SERIF_SQUARE 角形
PAN_SERIF_THIN 細形
PAN_SERIF_BONE ボーン形
PAN_SERIF_EXAGGERATED 誇張形
PAN_SERIF_TRIANGLE 三角形
PAN_SERIF_NORMAL_SANS 標準サンセリフ
PAN_SERIF_OBTUSE_SANS 鈍角サンセリフ
PAN_SERIF_PERP_SANS 垂直サンセリフ
PAN_SERIF_FLARED フレア形
PAN_SERIF_ROUNDED 丸形
bWeightPAN_WEIGHT1+2+2

ラテン文字フォントの場合、次のいずれかの値です。

意味
PAN_ANY 任意
PAN_NO_FIT 該当なし
PAN_WEIGHT_VERY_LIGHT 極細
PAN_WEIGHT_LIGHT 細字
PAN_WEIGHT_THIN 細形
PAN_WEIGHT_BOOK ブック
PAN_WEIGHT_MEDIUM 中字
PAN_WEIGHT_DEMI デミボールド
PAN_WEIGHT_BOLD ボールド
PAN_WEIGHT_HEAVY ヘビー
PAN_WEIGHT_BLACK ブラック
PAN_WEIGHT_NORD ノルド
bProportionPAN_PROPORTION1+3+3

ラテン文字フォントの場合、次のいずれかの値です。

意味
PAN_ANY 任意
PAN_NO_FIT 該当なし
PAN_PROP_OLD_STYLE オールドスタイル
PAN_PROP_MODERN モダン
PAN_PROP_EVEN_WIDTH 均等幅
PAN_PROP_EXPANDED 拡張
PAN_PROP_CONDENSED 圧縮
PAN_PROP_VERY_EXPANDED 非常に拡張
PAN_PROP_VERY_CONDENSED 非常に圧縮
PAN_PROP_MONOSPACED 等幅
bContrastPAN_CONTRAST1+4+4

ラテン文字フォントの場合、次のいずれかの値です。

意味
PAN_ANY 任意
PAN_NO_FIT 該当なし
PAN_CONTRAST_NONE なし
PAN_CONTRAST_VERY_LOW 非常に低い
PAN_CONTRAST_LOW 低い
PAN_CONTRAST_MEDIUM_LOW やや低い
PAN_CONTRAST_MEDIUM 中程度
PAN_CONTRAST_MEDIUM_HIGH やや高い
PAN_CONTRAST_HIGH 高い
PAN_CONTRAST_VERY_HIGH 非常に高い
bStrokeVariationPAN_STROKE_VARIATION1+5+5

ラテン文字フォントの場合、次のいずれかの値です。

意味
PAN_ANY 任意
PAN_NO_FIT 該当なし
PAN_STROKE_GRADUAL_DIAG 緩やか/斜め
PAN_STROKE_GRADUAL_TRAN 緩やか/漸次的
PAN_STROKE_GRADUAL_VERT 緩やか/垂直
PAN_STROKE_GRADUAL_HORZ 緩やか/水平
PAN_STROKE_RAPID_VERT 急激/垂直
PAN_STROKE_RAPID_HORZ 急激/水平
PAN_STROKE_INSTANT_VERT 瞬間的/垂直
bArmStylePAN_ARM_STYLE1+6+6

ラテン文字フォントの場合、次のいずれかの値です。

意味
PAN_ANY 任意
PAN_NO_FIT 該当なし
PAN_STRAIGHT_ARMS_HORZ 直線的なアーム/水平
PAN_STRAIGHT_ARMS_WEDGE 直線的なアーム/くさび形
PAN_STRAIGHT_ARMS_VERT 直線的なアーム/垂直
PAN_STRAIGHT_ARMS_SINGLE_SERIF 直線的なアーム/片側セリフ
PAN_STRAIGHT_ARMS_DOUBLE_SERIF 直線的なアーム/両側セリフ
PAN_BENT_ARMS_HORZ 非直線的なアーム/水平
PAN_BENT_ARMS_WEDGE 非直線的なアーム/くさび形
PAN_BENT_ARMS_VERT 非直線的なアーム/垂直
PAN_BENT_ARMS_SINGLE_SERIF 非直線的なアーム/片側セリフ
PAN_BENT_ARMS_DOUBLE_SERIF 非直線的なアーム/両側セリフ
bLetterformPAN_LETT_FORM1+7+7

ラテン文字フォントの場合、次のいずれかの値です。

意味
PAN_ANY 任意
PAN_NO_FIT 該当なし
PAN_LETT_NORMAL_CONTACT 標準/接触
PAN_LETT_NORMAL_WEIGHTED 標準/太さ強調
PAN_LETT_NORMAL_BOXED 標準/箱型
PAN_LETT_NORMAL_FLATTENED 標準/平坦
PAN_LETT_NORMAL_ROUNDED 標準/丸形
PAN_LETT_NORMAL_OFF_CENTER 標準/中心ずれ
PAN_LETT_NORMAL_SQUARE 標準/角形
PAN_LETT_OBLIQUE_CONTACT 斜体/接触
PAN_LETT_OBLIQUE_WEIGHTED 斜体/太さ強調
PAN_LETT_OBLIQUE_BOXED 斜体/箱型
PAN_LETT_OBLIQUE_FLATTENED 斜体/平坦
PAN_LETT_OBLIQUE_ROUNDED 斜体/丸形
PAN_LETT_OBLIQUE_OFF_CENTER 斜体/中心ずれ
PAN_LETT_OBLIQUE_SQUARE 斜体/角形
bMidlinePAN_MIDLINE1+8+8

ラテン文字フォントの場合、次のいずれかの値です。

意味
PAN_ANY 任意
PAN_NO_FIT 該当なし
PAN_MIDLINE_STANDARD_TRIMMED 標準/切り落とし
PAN_MIDLINE_STANDARD_POINTED 標準/尖り
PAN_MIDLINE_STANDARD_SERIFED 標準/セリフ付き
PAN_MIDLINE_HIGH_TRIMMED 高い/切り落とし
PAN_MIDLINE_HIGH_POINTED 高い/尖り
PAN_MIDLINE_HIGH_SERIFED 高い/セリフ付き
PAN_MIDLINE_CONSTANT_TRIMMED 一定/切り落とし
PAN_MIDLINE_CONSTANT_POINTED 一定/尖り
PAN_MIDLINE_CONSTANT_SERIFED 一定/セリフ付き
PAN_MIDLINE_LOW_TRIMMED 低い/切り落とし
PAN_MIDLINE_LOW_POINTED 低い/尖り
PAN_MIDLINE_LOW_SERIFED 低い/セリフ付き
bXHeightPAN_XHEIGHT1+9+9

ラテン文字フォントの場合、次のいずれかの値です。

意味
PAN_ANY 任意
PAN_NO_FIT 該当なし
PAN_XHEIGHT_CONSTANT_SMALL 一定/小
PAN_XHEIGHT_CONSTANT_STD 一定/標準
PAN_XHEIGHT_CONSTANT_LARGE 一定/大
PAN_XHEIGHT_DUCKING_SMALL ダッキング/小
PAN_XHEIGHT_DUCKING_STD ダッキング/標準
PAN_XHEIGHT_DUCKING_LARGE ダッキング/大

公式ドキュメント

PANOSE 構造体は、TrueType フォントの PANOSE フォント分類値を表します。これらの特性は、名前は異なるが外観の似たフォント同士を関連付けるために使用されます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#include <windows.h>

// PANOSE  (x64 10 / x86 10 バイト)
typedef struct PANOSE {
    PAN_FAMILY_TYPE bFamilyType;
    PAN_SERIF_STYLE bSerifStyle;
    PAN_WEIGHT bWeight;
    PAN_PROPORTION bProportion;
    PAN_CONTRAST bContrast;
    PAN_STROKE_VARIATION bStrokeVariation;
    PAN_ARM_STYLE bArmStyle;
    PAN_LETT_FORM bLetterform;
    PAN_MIDLINE bMidline;
    PAN_XHEIGHT bXHeight;
} PANOSE;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct PANOSE
{
    public byte bFamilyType;
    public byte bSerifStyle;
    public byte bWeight;
    public byte bProportion;
    public byte bContrast;
    public byte bStrokeVariation;
    public byte bArmStyle;
    public byte bLetterform;
    public byte bMidline;
    public byte bXHeight;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure PANOSE
    Public bFamilyType As Byte
    Public bSerifStyle As Byte
    Public bWeight As Byte
    Public bProportion As Byte
    Public bContrast As Byte
    Public bStrokeVariation As Byte
    Public bArmStyle As Byte
    Public bLetterform As Byte
    Public bMidline As Byte
    Public bXHeight As Byte
End Structure
import ctypes
from ctypes import wintypes

class PANOSE(ctypes.Structure):
    _fields_ = [
        ("bFamilyType", ctypes.c_ubyte),
        ("bSerifStyle", ctypes.c_ubyte),
        ("bWeight", ctypes.c_ubyte),
        ("bProportion", ctypes.c_ubyte),
        ("bContrast", ctypes.c_ubyte),
        ("bStrokeVariation", ctypes.c_ubyte),
        ("bArmStyle", ctypes.c_ubyte),
        ("bLetterform", ctypes.c_ubyte),
        ("bMidline", ctypes.c_ubyte),
        ("bXHeight", ctypes.c_ubyte),
    ]
#[repr(C)]
pub struct PANOSE {
    pub bFamilyType: u8,
    pub bSerifStyle: u8,
    pub bWeight: u8,
    pub bProportion: u8,
    pub bContrast: u8,
    pub bStrokeVariation: u8,
    pub bArmStyle: u8,
    pub bLetterform: u8,
    pub bMidline: u8,
    pub bXHeight: u8,
}
import "golang.org/x/sys/windows"

type PANOSE struct {
	bFamilyType byte
	bSerifStyle byte
	bWeight byte
	bProportion byte
	bContrast byte
	bStrokeVariation byte
	bArmStyle byte
	bLetterform byte
	bMidline byte
	bXHeight byte
}
type
  PANOSE = record
    bFamilyType: Byte;
    bSerifStyle: Byte;
    bWeight: Byte;
    bProportion: Byte;
    bContrast: Byte;
    bStrokeVariation: Byte;
    bArmStyle: Byte;
    bLetterform: Byte;
    bMidline: Byte;
    bXHeight: Byte;
  end;
const PANOSE = extern struct {
    bFamilyType: u8,
    bSerifStyle: u8,
    bWeight: u8,
    bProportion: u8,
    bContrast: u8,
    bStrokeVariation: u8,
    bArmStyle: u8,
    bLetterform: u8,
    bMidline: u8,
    bXHeight: u8,
};
type
  PANOSE {.bycopy.} = object
    bFamilyType: uint8
    bSerifStyle: uint8
    bWeight: uint8
    bProportion: uint8
    bContrast: uint8
    bStrokeVariation: uint8
    bArmStyle: uint8
    bLetterform: uint8
    bMidline: uint8
    bXHeight: uint8
struct PANOSE
{
    ubyte bFamilyType;
    ubyte bSerifStyle;
    ubyte bWeight;
    ubyte bProportion;
    ubyte bContrast;
    ubyte bStrokeVariation;
    ubyte bArmStyle;
    ubyte bLetterform;
    ubyte bMidline;
    ubyte bXHeight;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; PANOSE サイズ: 10 バイト(x64)
dim st, 3    ; 4byte整数×3(構造体サイズ 10 / 4 切り上げ)
; bFamilyType : PAN_FAMILY_TYPE (+0, 1byte)  poke st,0,値  /  値 = peek(st,0)
; bSerifStyle : PAN_SERIF_STYLE (+1, 1byte)  poke st,1,値  /  値 = peek(st,1)
; bWeight : PAN_WEIGHT (+2, 1byte)  poke st,2,値  /  値 = peek(st,2)
; bProportion : PAN_PROPORTION (+3, 1byte)  poke st,3,値  /  値 = peek(st,3)
; bContrast : PAN_CONTRAST (+4, 1byte)  poke st,4,値  /  値 = peek(st,4)
; bStrokeVariation : PAN_STROKE_VARIATION (+5, 1byte)  poke st,5,値  /  値 = peek(st,5)
; bArmStyle : PAN_ARM_STYLE (+6, 1byte)  poke st,6,値  /  値 = peek(st,6)
; bLetterform : PAN_LETT_FORM (+7, 1byte)  poke st,7,値  /  値 = peek(st,7)
; bMidline : PAN_MIDLINE (+8, 1byte)  poke st,8,値  /  値 = peek(st,8)
; bXHeight : PAN_XHEIGHT (+9, 1byte)  poke st,9,値  /  値 = peek(st,9)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global PANOSE
    #field byte bFamilyType
    #field byte bSerifStyle
    #field byte bWeight
    #field byte bProportion
    #field byte bContrast
    #field byte bStrokeVariation
    #field byte bArmStyle
    #field byte bLetterform
    #field byte bMidline
    #field byte bXHeight
#endstruct

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