diff --git a/inc/hgl/text/FontInfo.h b/inc/hgl/text/FontInfo.h new file mode 100644 index 0000000..f8691c4 --- /dev/null +++ b/inc/hgl/text/FontInfo.h @@ -0,0 +1,56 @@ +#pragma once + +#include + +namespace hgl +{ + enum class FontType + { + Raster, + Vector, + TrueType + }; + + constexpr const size_t HGL_FONT_NAME_MAX_LENGTH=128; + + struct FontInfo + { + os_char name[HGL_FONT_NAME_MAX_LENGTH]; + FontType type; + + uint charset; + + //尺寸仅用于Raster字体 + uint height; + + uint ascent; ///<上升 + uint descent; ///<下降 + uint internal_leading; ///<内部行距 + uint external_leading; ///<外部行距 + uint ave_char_width; ///<平均字宽 + uint max_char_width; ///<最大字宽 + uint weight; ///<权重 + uint overhang; ///<超出部分 + uint digitized_aspect_x; ///<横向分辨率 + uint digitized_aspect_y; ///<纵向分辨率 + os_char first_char; + os_char last_char; + os_char default_char; + os_char break_char; + bool italic; ///<斜体 + bool underlined; ///<下划线 + bool struck_out; ///<删除线 + uint pitch_and_family; ///<字体类型 + + public: + + FontInfo() + { + hgl_zero(*this); + } + }; + + using FontMap=ObjectMap; + + void EnumOSFonts(FontMap *); +}//namespace hgl diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0486703..3255d4f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -66,6 +66,7 @@ SET(STRING_HEADER_FILES ${TYPE_INCLUDE_PATH}/String.h SET(TEXT_HEADER_FILES ${CMCORE_ROOT_INCLUDE_PATH}/hgl/Endian.h ${CMCORE_ROOT_INCLUDE_PATH}/hgl/CodePage.h + ${CMCORE_ROOT_INCLUDE_PATH}/hgl/text/FontInfo.h ${TYPE_INCLUDE_PATH}/UnicodeBlocks.h ${TYPE_INCLUDE_PATH}/StrChar.h)