mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 23:50:19 +00:00
d38a3ca9eb
This patch parses enough of GPOS tables to be able to support the kerning information embedded in Inter. Since that specific font only applies positioning offsets to the first glyph in each pair, I was able to get away with not changing our API. Once we start adding support for more sophisticated positioning, we'll need to be able to communicate more than a simple "kerning offset" to the clients of this code.
551 lines
9 KiB
C
551 lines
9 KiB
C
/*
|
|
* Copyright (c) 2020-2022, the SerenityOS developers.
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#ifndef AFLACLOADER_DEBUG
|
|
# cmakedefine01 AFLACLOADER_DEBUG
|
|
#endif
|
|
|
|
#ifndef AWAVLOADER_DEBUG
|
|
# cmakedefine01 AWAVLOADER_DEBUG
|
|
#endif
|
|
|
|
#ifndef BMP_DEBUG
|
|
# cmakedefine01 BMP_DEBUG
|
|
#endif
|
|
|
|
#ifndef BINDINGS_GENERATOR_DEBUG
|
|
# cmakedefine01 BINDINGS_GENERATOR_DEBUG
|
|
#endif
|
|
|
|
#ifndef CACHE_DEBUG
|
|
# cmakedefine01 CACHE_DEBUG
|
|
#endif
|
|
|
|
#ifndef CALLBACK_MACHINE_DEBUG
|
|
# cmakedefine01 CALLBACK_MACHINE_DEBUG
|
|
#endif
|
|
|
|
#ifndef CANVAS_RENDERING_CONTEXT_2D_DEBUG
|
|
# cmakedefine01 CANVAS_RENDERING_CONTEXT_2D_DEBUG
|
|
#endif
|
|
|
|
#ifndef CMAKE_DEBUG
|
|
# cmakedefine01 CMAKE_DEBUG
|
|
#endif
|
|
|
|
#ifndef COMPOSE_DEBUG
|
|
# cmakedefine01 COMPOSE_DEBUG
|
|
#endif
|
|
|
|
#ifndef COPY_DEBUG
|
|
# cmakedefine01 COPY_DEBUG
|
|
#endif
|
|
|
|
#ifndef CPP_DEBUG
|
|
# cmakedefine01 CPP_DEBUG
|
|
#endif
|
|
|
|
#ifndef CPP_LANGUAGE_SERVER_DEBUG
|
|
# cmakedefine01 CPP_LANGUAGE_SERVER_DEBUG
|
|
#endif
|
|
|
|
#ifndef CRYPTO_DEBUG
|
|
# cmakedefine01 CRYPTO_DEBUG
|
|
#endif
|
|
|
|
#ifndef CSOCKET_DEBUG
|
|
# cmakedefine01 CSOCKET_DEBUG
|
|
#endif
|
|
|
|
#ifndef CSS_LOADER_DEBUG
|
|
# cmakedefine01 CSS_LOADER_DEBUG
|
|
#endif
|
|
|
|
#ifndef CSS_PARSER_DEBUG
|
|
# cmakedefine01 CSS_PARSER_DEBUG
|
|
#endif
|
|
|
|
#ifndef CSS_TOKENIZER_DEBUG
|
|
# cmakedefine01 CSS_TOKENIZER_DEBUG
|
|
#endif
|
|
|
|
#ifndef CURSOR_TOOL_DEBUG
|
|
# cmakedefine01 CURSOR_TOOL_DEBUG
|
|
#endif
|
|
|
|
#ifndef DDS_DEBUG
|
|
# cmakedefine01 DDS_DEBUG
|
|
#endif
|
|
|
|
#ifndef DEFERRED_INVOKE_DEBUG
|
|
# cmakedefine01 DEFERRED_INVOKE_DEBUG
|
|
#endif
|
|
|
|
#ifndef DHCPV4_DEBUG
|
|
# cmakedefine01 DHCPV4_DEBUG
|
|
#endif
|
|
|
|
#ifndef DHCPV4CLIENT_DEBUG
|
|
# cmakedefine01 DHCPV4CLIENT_DEBUG
|
|
#endif
|
|
|
|
#ifndef DIFF_DEBUG
|
|
# cmakedefine01 DIFF_DEBUG
|
|
#endif
|
|
|
|
#ifndef DISASM_DUMP_DEBUG
|
|
# cmakedefine01 DISASM_DUMP_DEBUG
|
|
#endif
|
|
|
|
#ifndef DOUBLECLICK_DEBUG
|
|
# cmakedefine01 DOUBLECLICK_DEBUG
|
|
#endif
|
|
|
|
#ifndef DRAG_DEBUG
|
|
# cmakedefine01 DRAG_DEBUG
|
|
#endif
|
|
|
|
#ifndef DWARF_DEBUG
|
|
# cmakedefine01 DWARF_DEBUG
|
|
#endif
|
|
|
|
#ifndef DYNAMIC_LOAD_DEBUG
|
|
# cmakedefine01 DYNAMIC_LOAD_DEBUG
|
|
#endif
|
|
|
|
#ifndef EDITOR_DEBUG
|
|
# cmakedefine01 EDITOR_DEBUG
|
|
#endif
|
|
|
|
#ifndef ELF_IMAGE_DEBUG
|
|
# cmakedefine01 ELF_IMAGE_DEBUG
|
|
#endif
|
|
|
|
#ifndef EMOJI_DEBUG
|
|
# cmakedefine01 EMOJI_DEBUG
|
|
#endif
|
|
|
|
#ifndef ESCAPE_SEQUENCE_DEBUG
|
|
# cmakedefine01 ESCAPE_SEQUENCE_DEBUG
|
|
#endif
|
|
|
|
#ifndef EVENT_DEBUG
|
|
# cmakedefine01 EVENT_DEBUG
|
|
#endif
|
|
|
|
#ifndef EVENTLOOP_DEBUG
|
|
# cmakedefine01 EVENTLOOP_DEBUG
|
|
#endif
|
|
|
|
#ifndef FILE_CONTENT_DEBUG
|
|
# cmakedefine01 FILE_CONTENT_DEBUG
|
|
#endif
|
|
|
|
#ifndef FILL_PATH_DEBUG
|
|
# cmakedefine01 FILL_PATH_DEBUG
|
|
#endif
|
|
|
|
#ifndef FILE_WATCHER_DEBUG
|
|
# cmakedefine01 FILE_WATCHER_DEBUG
|
|
#endif
|
|
|
|
#ifndef GEMINI_DEBUG
|
|
# cmakedefine01 GEMINI_DEBUG
|
|
#endif
|
|
|
|
#ifndef GEMINIJOB_DEBUG
|
|
# cmakedefine01 GEMINIJOB_DEBUG
|
|
#endif
|
|
|
|
#ifndef GENERATE_DEBUG
|
|
# cmakedefine01 GENERATE_DEBUG
|
|
#endif
|
|
|
|
#ifndef GHASH_PROCESS_DEBUG
|
|
# cmakedefine01 GHASH_PROCESS_DEBUG
|
|
#endif
|
|
|
|
#ifndef GIF_DEBUG
|
|
# cmakedefine01 GIF_DEBUG
|
|
#endif
|
|
|
|
#ifndef GL_DEBUG
|
|
# cmakedefine01 GL_DEBUG
|
|
#endif
|
|
|
|
#ifndef GLOBAL_DTORS_DEBUG
|
|
# cmakedefine01 GLOBAL_DTORS_DEBUG
|
|
#endif
|
|
|
|
#ifndef GPT_DEBUG
|
|
# cmakedefine01 GPT_DEBUG
|
|
#endif
|
|
|
|
#ifndef GZIP_DEBUG
|
|
# cmakedefine01 GZIP_DEBUG
|
|
#endif
|
|
|
|
#ifndef HEAP_DEBUG
|
|
# cmakedefine01 HEAP_DEBUG
|
|
#endif
|
|
|
|
#ifndef HEARTS_DEBUG
|
|
# cmakedefine01 HEARTS_DEBUG
|
|
#endif
|
|
|
|
#ifndef HEX_DEBUG
|
|
# cmakedefine01 HEX_DEBUG
|
|
#endif
|
|
|
|
#ifndef HIGHLIGHT_FOCUSED_FRAME_DEBUG
|
|
# cmakedefine01 HIGHLIGHT_FOCUSED_FRAME_DEBUG
|
|
#endif
|
|
|
|
#ifndef HTML_SCRIPT_DEBUG
|
|
# cmakedefine01 HTML_SCRIPT_DEBUG
|
|
#endif
|
|
|
|
#ifndef HTTPJOB_DEBUG
|
|
# cmakedefine01 HTTPJOB_DEBUG
|
|
#endif
|
|
|
|
#ifndef HTTPSJOB_DEBUG
|
|
# cmakedefine01 HTTPSJOB_DEBUG
|
|
#endif
|
|
|
|
#ifndef HUNKS_DEBUG
|
|
# cmakedefine01 HUNKS_DEBUG
|
|
#endif
|
|
|
|
#ifndef ICO_DEBUG
|
|
# cmakedefine01 ICO_DEBUG
|
|
#endif
|
|
|
|
#ifndef IMAGE_DECODER_DEBUG
|
|
# cmakedefine01 IMAGE_DECODER_DEBUG
|
|
#endif
|
|
|
|
#ifndef IMAGE_LOADER_DEBUG
|
|
# cmakedefine01 IMAGE_LOADER_DEBUG
|
|
#endif
|
|
|
|
#ifndef ITEM_RECTS_DEBUG
|
|
# cmakedefine01 ITEM_RECTS_DEBUG
|
|
#endif
|
|
|
|
#ifndef JOB_DEBUG
|
|
# cmakedefine01 JOB_DEBUG
|
|
#endif
|
|
|
|
#ifndef JPEG_DEBUG
|
|
# cmakedefine01 JPEG_DEBUG
|
|
#endif
|
|
|
|
#ifndef JS_BYTECODE_DEBUG
|
|
# cmakedefine01 JS_BYTECODE_DEBUG
|
|
#endif
|
|
|
|
#ifndef JS_MODULE_DEBUG
|
|
# cmakedefine01 JS_MODULE_DEBUG
|
|
#endif
|
|
|
|
#ifndef KEYBOARD_SHORTCUTS_DEBUG
|
|
# cmakedefine01 KEYBOARD_SHORTCUTS_DEBUG
|
|
#endif
|
|
|
|
#ifndef LANGUAGE_SERVER_DEBUG
|
|
# cmakedefine01 LANGUAGE_SERVER_DEBUG
|
|
#endif
|
|
|
|
#ifndef LEXER_DEBUG
|
|
# cmakedefine01 LEXER_DEBUG
|
|
#endif
|
|
|
|
#ifndef LIBWEB_CSS_DEBUG
|
|
# cmakedefine01 LIBWEB_CSS_DEBUG
|
|
#endif
|
|
|
|
#ifndef LINE_EDITOR_DEBUG
|
|
# cmakedefine01 LINE_EDITOR_DEBUG
|
|
#endif
|
|
|
|
#ifndef LOG_DEBUG
|
|
# cmakedefine01 LOG_DEBUG
|
|
#endif
|
|
|
|
#ifndef LOOKUPSERVER_DEBUG
|
|
# cmakedefine01 LOOKUPSERVER_DEBUG
|
|
#endif
|
|
|
|
#ifndef MALLOC_DEBUG
|
|
# cmakedefine01 MALLOC_DEBUG
|
|
#endif
|
|
|
|
#ifndef MARKDOWN_DEBUG
|
|
# cmakedefine01 MARKDOWN_DEBUG
|
|
#endif
|
|
|
|
#ifndef MATROSKA_DEBUG
|
|
# cmakedefine01 MATROSKA_DEBUG
|
|
#endif
|
|
|
|
#ifndef MATROSKA_TRACE_DEBUG
|
|
# cmakedefine01 MATROSKA_TRACE_DEBUG
|
|
#endif
|
|
|
|
#ifndef MBR_DEBUG
|
|
# cmakedefine01 MBR_DEBUG
|
|
#endif
|
|
|
|
#ifndef MEMORY_DEBUG
|
|
# cmakedefine01 MEMORY_DEBUG
|
|
#endif
|
|
|
|
#ifndef MENU_DEBUG
|
|
# cmakedefine01 MENU_DEBUG
|
|
#endif
|
|
|
|
#ifndef MENUS_DEBUG
|
|
# cmakedefine01 MENUS_DEBUG
|
|
#endif
|
|
|
|
#ifndef MINIMIZE_ANIMATION_DEBUG
|
|
# cmakedefine01 MINIMIZE_ANIMATION_DEBUG
|
|
#endif
|
|
|
|
#ifndef MOVE_DEBUG
|
|
# cmakedefine01 MOVE_DEBUG
|
|
#endif
|
|
|
|
#ifndef NETWORKJOB_DEBUG
|
|
# cmakedefine01 NETWORKJOB_DEBUG
|
|
#endif
|
|
|
|
#ifndef NT_DEBUG
|
|
# cmakedefine01 NT_DEBUG
|
|
#endif
|
|
|
|
#ifndef OCCLUSIONS_DEBUG
|
|
# cmakedefine01 OCCLUSIONS_DEBUG
|
|
#endif
|
|
|
|
#ifndef OPENTYPE_GPOS_DEBUG
|
|
# cmakedefine01 OPENTYPE_GPOS_DEBUG
|
|
#endif
|
|
|
|
#ifndef HTML_PARSER_DEBUG
|
|
# cmakedefine01 HTML_PARSER_DEBUG
|
|
#endif
|
|
|
|
#ifndef PATH_DEBUG
|
|
# cmakedefine01 PATH_DEBUG
|
|
#endif
|
|
|
|
#ifndef PDF_DEBUG
|
|
# cmakedefine01 PDF_DEBUG
|
|
#endif
|
|
|
|
#ifndef PLAYBACK_MANAGER_DEBUG
|
|
# cmakedefine01 PLAYBACK_MANAGER_DEBUG
|
|
#endif
|
|
|
|
#ifndef PNG_DEBUG
|
|
# cmakedefine01 PNG_DEBUG
|
|
#endif
|
|
|
|
#ifndef PORTABLE_IMAGE_LOADER_DEBUG
|
|
# cmakedefine01 PORTABLE_IMAGE_LOADER_DEBUG
|
|
#endif
|
|
|
|
#ifndef PROMISE_DEBUG
|
|
# cmakedefine01 PROMISE_DEBUG
|
|
#endif
|
|
|
|
#ifndef PTHREAD_DEBUG
|
|
# cmakedefine01 PTHREAD_DEBUG
|
|
#endif
|
|
|
|
#ifndef REACHABLE_DEBUG
|
|
# cmakedefine01 REACHABLE_DEBUG
|
|
#endif
|
|
|
|
#ifndef REGEX_DEBUG
|
|
# cmakedefine01 REGEX_DEBUG
|
|
#endif
|
|
|
|
#ifndef REQUESTSERVER_DEBUG
|
|
# cmakedefine01 REQUESTSERVER_DEBUG
|
|
#endif
|
|
|
|
#ifndef RESIZE_DEBUG
|
|
# cmakedefine01 RESIZE_DEBUG
|
|
#endif
|
|
|
|
#ifndef RESOURCE_DEBUG
|
|
# cmakedefine01 RESOURCE_DEBUG
|
|
#endif
|
|
|
|
#ifndef RSA_PARSE_DEBUG
|
|
# cmakedefine01 RSA_PARSE_DEBUG
|
|
#endif
|
|
|
|
#ifndef SAFE_SYSCALL_DEBUG
|
|
# cmakedefine01 SAFE_SYSCALL_DEBUG
|
|
#endif
|
|
|
|
#ifndef SERVICE_DEBUG
|
|
# cmakedefine01 SERVICE_DEBUG
|
|
#endif
|
|
|
|
#ifndef SH_DEBUG
|
|
# cmakedefine01 SH_DEBUG
|
|
#endif
|
|
|
|
#ifndef SH_LANGUAGE_SERVER_DEBUG
|
|
# cmakedefine01 SH_LANGUAGE_SERVER_DEBUG
|
|
#endif
|
|
|
|
#ifndef SHARED_QUEUE_DEBUG
|
|
# cmakedefine01 SHARED_QUEUE_DEBUG
|
|
#endif
|
|
|
|
#ifndef SHELL_JOB_DEBUG
|
|
# cmakedefine01 SHELL_JOB_DEBUG
|
|
#endif
|
|
|
|
#ifndef SHELL_POSIX_PARSER_DEBUG
|
|
# cmakedefine01 SHELL_POSIX_PARSER_DEBUG
|
|
#endif
|
|
|
|
#ifndef SOLITAIRE_DEBUG
|
|
# cmakedefine01 SOLITAIRE_DEBUG
|
|
#endif
|
|
|
|
#ifndef SPAM_DEBUG
|
|
# cmakedefine01 SPAM_DEBUG
|
|
#endif
|
|
|
|
#ifndef SQL_DEBUG
|
|
# cmakedefine01 SQL_DEBUG
|
|
#endif
|
|
|
|
#ifndef SQLSERVER_DEBUG
|
|
# cmakedefine01 SQLSERVER_DEBUG
|
|
#endif
|
|
|
|
#ifndef SYNTAX_HIGHLIGHTING_DEBUG
|
|
# cmakedefine01 SYNTAX_HIGHLIGHTING_DEBUG
|
|
#endif
|
|
|
|
#ifndef SYSCALL_1_DEBUG
|
|
# cmakedefine01 SYSCALL_1_DEBUG
|
|
#endif
|
|
|
|
#ifndef SYSTEM_MENU_DEBUG
|
|
# cmakedefine01 SYSTEM_MENU_DEBUG
|
|
#endif
|
|
|
|
#ifndef SYSTEMSERVER_DEBUG
|
|
# cmakedefine01 SYSTEMSERVER_DEBUG
|
|
#endif
|
|
|
|
#ifndef TERMCAP_DEBUG
|
|
# cmakedefine01 TERMCAP_DEBUG
|
|
#endif
|
|
|
|
#ifndef TERMINAL_DEBUG
|
|
# cmakedefine01 TERMINAL_DEBUG
|
|
#endif
|
|
|
|
#ifndef TEXTEDITOR_DEBUG
|
|
# cmakedefine01 TEXTEDITOR_DEBUG
|
|
#endif
|
|
|
|
#ifndef TIME_ZONE_DEBUG
|
|
# cmakedefine01 TIME_ZONE_DEBUG
|
|
#endif
|
|
|
|
#ifndef TLS_DEBUG
|
|
# cmakedefine01 TLS_DEBUG
|
|
#endif
|
|
|
|
#ifndef TLS_SSL_KEYLOG_DEBUG
|
|
# cmakedefine01 TLS_SSL_KEYLOG_DEBUG
|
|
#endif
|
|
|
|
#ifndef TOKENIZER_TRACE_DEBUG
|
|
# cmakedefine01 TOKENIZER_TRACE_DEBUG
|
|
#endif
|
|
|
|
#ifndef UCI_DEBUG
|
|
# cmakedefine01 UCI_DEBUG
|
|
#endif
|
|
|
|
#ifndef UPDATE_COALESCING_DEBUG
|
|
# cmakedefine01 UPDATE_COALESCING_DEBUG
|
|
#endif
|
|
|
|
#ifndef URL_PARSER_DEBUG
|
|
# cmakedefine01 URL_PARSER_DEBUG
|
|
#endif
|
|
|
|
#ifndef UTF8_DEBUG
|
|
# cmakedefine01 UTF8_DEBUG
|
|
#endif
|
|
|
|
#ifndef WASM_BINPARSER_DEBUG
|
|
# cmakedefine01 WASM_BINPARSER_DEBUG
|
|
#endif
|
|
|
|
#ifndef WASM_TRACE_DEBUG
|
|
# cmakedefine01 WASM_TRACE_DEBUG
|
|
#endif
|
|
|
|
#ifndef WASM_VALIDATOR_DEBUG
|
|
# cmakedefine01 WASM_VALIDATOR_DEBUG
|
|
#endif
|
|
|
|
#ifndef WEBDRIVER_DEBUG
|
|
# cmakedefine01 WEBDRIVER_DEBUG
|
|
#endif
|
|
|
|
#ifndef WEBGL_CONTEXT_DEBUG
|
|
# cmakedefine01 WEBGL_CONTEXT_DEBUG
|
|
#endif
|
|
|
|
#ifndef WEBSERVER_DEBUG
|
|
# cmakedefine01 WEBSERVER_DEBUG
|
|
#endif
|
|
|
|
#ifndef WEB_FETCH_DEBUG
|
|
# cmakedefine01 WEB_FETCH_DEBUG
|
|
#endif
|
|
|
|
#ifndef WEB_WORKER_DEBUG
|
|
# cmakedefine01 WEB_WORKER_DEBUG
|
|
#endif
|
|
|
|
#ifndef WEBP_DEBUG
|
|
# cmakedefine01 WEBP_DEBUG
|
|
#endif
|
|
|
|
#ifndef WINDOWMANAGER_DEBUG
|
|
# cmakedefine01 WINDOWMANAGER_DEBUG
|
|
#endif
|
|
|
|
#ifndef WSMESSAGELOOP_DEBUG
|
|
# cmakedefine01 WSMESSAGELOOP_DEBUG
|
|
#endif
|
|
|
|
#ifndef WSSCREEN_DEBUG
|
|
# cmakedefine01 WSSCREEN_DEBUG
|
|
#endif
|
|
|
|
#ifndef XML_PARSER_DEBUG
|
|
# cmakedefine01 XML_PARSER_DEBUG
|
|
#endif
|