Browse Source

Rename font namespace to type, add unicode conversion functions

master
C. J. Howard 2 years ago
parent
commit
0f96f130eb
10 changed files with 260 additions and 11 deletions
  1. +0
    -1
      CMakeLists.txt
  2. +25
    -0
      src/type/font.cpp
  3. +40
    -0
      src/type/font.hpp
  4. +39
    -0
      src/type/glyph.hpp
  5. +29
    -0
      src/type/type.hpp
  6. +3
    -3
      src/type/unicode/block.cpp
  7. +5
    -7
      src/type/unicode/block.hpp
  8. +39
    -0
      src/type/unicode/convert.cpp
  9. +47
    -0
      src/type/unicode/convert.hpp
  10. +33
    -0
      src/type/unicode/unicode.hpp

+ 0
- 1
CMakeLists.txt View File

@ -1,6 +1,5 @@
cmake_minimum_required(VERSION 3.7)
option(VERSION_STRING "Project version string" "0.0.0")
project(antkeeper VERSION ${VERSION_STRING} LANGUAGES CXX)

+ 25
- 0
src/type/font.cpp View File

@ -0,0 +1,25 @@
/*
* Copyright (C) 2021 Christopher J. Howard
*
* This file is part of Antkeeper source code.
*
* Antkeeper source code is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Antkeeper source code is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Antkeeper source code. If not, see <http://www.gnu.org/licenses/>.
*/
#include "type/font.hpp"
namespace type {
} // namespace type

+ 40
- 0
src/type/font.hpp View File

@ -0,0 +1,40 @@
/*
* Copyright (C) 2021 Christopher J. Howard
*
* This file is part of Antkeeper source code.
*
* Antkeeper source code is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Antkeeper source code is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Antkeeper source code. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef ANTKEEPER_TYPE_FONT_HPP
#define ANTKEEPER_TYPE_FONT_HPP
#include <string>
namespace type {
class font
{
public:
//font();
//float measure(const std::u32string& text) const;
private:
};
} // namespace type
#endif // ANTKEEPER_TYPE_FONT_HPP

+ 39
- 0
src/type/glyph.hpp View File

@ -0,0 +1,39 @@
/*
* Copyright (C) 2021 Christopher J. Howard
*
* This file is part of Antkeeper source code.
*
* Antkeeper source code is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Antkeeper source code is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Antkeeper source code. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef ANTKEEPER_TYPE_GLYPH_HPP
#define ANTKEEPER_TYPE_GLYPH_HPP
namespace type {
/**
*
*/
struct glyph_metrics
{
float2 size;
float2 bearing_h;
float2 bearing_v;
float advance_h;
float advance_v;
};
} // namespace type
#endif // ANTKEEPER_TYPE_GLYPH_HPP

+ 29
- 0
src/type/type.hpp View File

@ -0,0 +1,29 @@
/*
* Copyright (C) 2021 Christopher J. Howard
*
* This file is part of Antkeeper source code.
*
* Antkeeper source code is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Antkeeper source code is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Antkeeper source code. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef ANTKEEPER_TYPE_HPP
#define ANTKEEPER_TYPE_HPP
/// Text and typography.
namespace type {}
#include "type/font.hpp"
#include "type/unicode/unicode.hpp"
#endif // ANTKEEPER_TYPE_HPP

src/font/unicode-block.cpp → src/type/unicode/block.cpp View File

@ -17,9 +17,9 @@
* along with Antkeeper source code. If not, see <http://www.gnu.org/licenses/>.
*/
#include "unicode-block.hpp"
#include "type/unicode/block.hpp"
namespace font {
namespace type {
namespace unicode {
const block block::basic_latin{0x0, 0x7F};
@ -344,4 +344,4 @@ const block block::supplementary_private_use_area_a{0xF0000, 0xFFFFF};
const block block::supplementary_private_use_area_b{0x100000, 0x10FFFF};
} // namespace unicode
} // namespace font
} // namespace type

src/font/unicode-block.hpp → src/type/unicode/block.hpp View File

@ -17,12 +17,10 @@
* along with Antkeeper source code. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef ANTKEEPER_FONT_UNICODE_BLOCK_HPP
#define ANTKEEPER_FONT_UNICODE_BLOCK_HPP
#ifndef ANTKEEPER_TYPE_UNICODE_BLOCK_HPP
#define ANTKEEPER_TYPE_UNICODE_BLOCK_HPP
namespace font {
/// Unicode-related functions and data
namespace type {
namespace unicode {
/**
@ -1001,6 +999,6 @@ struct block
};
} // namespace unicode
} // namespace font
} // namespace type
#endif // ANTKEEPER_FONT_UNICODE_BLOCK_HPP
#endif // ANTKEEPER_TYPE_UNICODE_BLOCK_HPP

+ 39
- 0
src/type/unicode/convert.cpp View File

@ -0,0 +1,39 @@
/*
* Copyright (C) 2021 Christopher J. Howard
*
* This file is part of Antkeeper source code.
*
* Antkeeper source code is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Antkeeper source code is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Antkeeper source code. If not, see <http://www.gnu.org/licenses/>.
*/
#include "type/unicode/convert.hpp"
#include <codecvt>
namespace font {
namespace unicode {
std::u32string u32(const std::string& u8)
{
std::wstring_convert<std::codecvt_utf8<char32_t>, char32_t> convert;
return convert.from_bytes(u8);
}
std::string u8(const std::u32string& u32)
{
std::wstring_convert<std::codecvt_utf8<char32_t>, char32_t> convert;
return convert.to_bytes(u32);
}
} // namespace unicode
} // namespace font

+ 47
- 0
src/type/unicode/convert.hpp View File

@ -0,0 +1,47 @@
/*
* Copyright (C) 2021 Christopher J. Howard
*
* This file is part of Antkeeper source code.
*
* Antkeeper source code is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Antkeeper source code is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Antkeeper source code. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef ANTKEEPER_TYPE_UNICODE_CONVERT_HPP
#define ANTKEEPER_TYPE_UNICODE_CONVERT_HPP
#include <string>
namespace type {
namespace unicode {
/**
* Converts a UTF-8 string to UTF-32.
*
* @param u8 UTF-8 string.
* @return UTF-32 string.
*/
std::u32string u32(const std::string& u8);
/**
* Converts a UTF-32 string to UTF-8.
*
* @param u32 UTF-32 string.
* @return UTF-8 string.
*/
std::string u32(const std::u32string& u32);
} // namespace unicode
} // namespace type
#endif // ANTKEEPER_TYPE_UNICODE_CONVERT_HPP

+ 33
- 0
src/type/unicode/unicode.hpp View File

@ -0,0 +1,33 @@
/*
* Copyright (C) 2021 Christopher J. Howard
*
* This file is part of Antkeeper source code.
*
* Antkeeper source code is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Antkeeper source code is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Antkeeper source code. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef ANTKEEPER_TYPE_UNICODE_HPP
#define ANTKEEPER_TYPE_UNICODE_HPP
namespace type {
/// Unicode-related functions and data.
namespace unicode {}
} // namespace type
#include "type/unicode/block.hpp"
#include "type/unicode/convert.hpp"
#endif // ANTKEEPER_TYPE_UNICODE_HPP

Loading…
Cancel
Save