diff --git a/.gitignore b/.gitignore index 8e0d4149..e70adbfb 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,6 @@ CMakeFiles Makefile cmake_install.cmake install_manifest.txt - -/build +/build/armv7 +/build/aarch64 +/build/x86_64 diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..3b6016d1 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "editor.minimap.enabled": true, + "editor.rulers": [ + 80, + 120 + ], + "C_Cpp.errorSquiggles": "Disabled" +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 00000000..bd166282 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,65 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "Build-Libaroma", + "type": "shell", + "command": "bash ./build.sh", + "options": { + "cwd": "${workspaceRoot}" + }, + "presentation": { + "focus": true, + "clear": true + } + }, + { + "label": "Clean-Build-Libaroma", + "type": "shell", + "command": "bash ./build.sh clean", + "options": { + "cwd": "${workspaceRoot}" + }, + "presentation": { + "focus": true, + "clear": true + } + }, + { + "label": "Build-Libaroma-x86_64", + "type": "shell", + "command": "bash ./build.sh x86_64", + "options": { + "cwd": "${workspaceRoot}" + }, + "presentation": { + "focus": true, + "clear": true + } + }, + { + "label": "Build-Libaroma-aarch64", + "type": "shell", + "command": "bash ./build.sh aarch64", + "options": { + "cwd": "${workspaceRoot}" + }, + "presentation": { + "focus": true, + "clear": true + } + }, + { + "label": "Build-Libaroma-armv7", + "type": "shell", + "command": "bash ./build.sh armv7", + "options": { + "cwd": "${workspaceRoot}" + }, + "presentation": { + "focus": true, + "clear": true + } + } + ] +} \ No newline at end of file diff --git a/Android.mk b/Android.mk deleted file mode 100644 index f7aa1627..00000000 --- a/Android.mk +++ /dev/null @@ -1,177 +0,0 @@ -#####################################################################[libaroma]# -## Copyright (C) 2011-2015 Ahmad Amarullah (http://amarullz.com/) -## -## Licensed under the Apache License, Version 2.0 (the "License"); -## you may not use this file except in compliance with the License. -## You may obtain a copy of the License at -## -## http://www.apache.org/licenses/LICENSE-2.0 -## -## Unless required by applicable law or agreed to in writing, software -## distributed under the License is distributed on an "AS IS" BASIS, -## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -## See the License for the specific language governing permissions and -## limitations under the License. -##______________________________________________________________________________ -## -## Filename : Android.mk -## Description : Android make file -## -## + This is part of libaroma, an embedded ui toolkit. -## + 27/01/15 - Author(s): Ahmad Amarullah -## -#####################################################################[libaroma]# - -## -## local path -## -LOCAL_PATH := $(call my-dir) -LIBAROMA_PATH := $(LOCAL_PATH) - -## -## features configurations -## -LIBAROMA_MK_WITH_JPEG := true -LIBAROMA_MK_SHMEMFB := 1 -LIBAROMA_MK_DEBUG_LEVEL := 5 -LIBAROMA_MK_DEBUG_WITH_FILE := 2 -LIBAROMA_MK_DEBUG_MEMORY_LEAK := 1 -LIBAROMA_MK_DEBUG_COMPILER := 1 - -## -## device sources -## -LIBAROMA_MK_DEVICE_FILES := \ - src/contrib/linux/fb_driver.c \ - src/contrib/linux/hid_driver.c - -## -## libs path -## -LIBAROMA_MK_ZLIB_PATH := external/zlib -LIBAROMA_MK_PNG_PATH := external/libpng -LIBAROMA_MK_JPEG_PATH := external/jpeg -LIBAROMA_MK_FREETYPE_PATH := $(LIBAROMA_PATH)/libs/freetype -LIBAROMA_MK_HARFBUZZNG_PATH := $(LIBAROMA_PATH)/libs/harfbuzz-ng -LIBAROMA_MK_MINZIP_PATH := $(LIBAROMA_PATH)/libs/minzip - -## -## libs module name -## -LIBAROMA_MK_ZLIB_LIB := libz -LIBAROMA_MK_PNG_LIB := libpng -LIBAROMA_MK_JPEG_LIB := libjpeg_static -LIBAROMA_MK_FREETYPE_LIB := libft2_libaroma -LIBAROMA_MK_HARFBUZZNG_LIB := libharfbuzz_ng_libaroma -LIBAROMA_MK_MINZIP_LIB := libminzip_libaroma - -################################################################################ -## -## build libaroma static library -## - include $(CLEAR_VARS) - LOCAL_MODULE := libaroma - LOCAL_MODULE_TAGS := optional - - ## - ## sources - ## - LOCAL_SRC_FILES := \ - src/aroma/aroma.c \ - src/aroma/version.c \ - src/aroma/utils/*.c \ - src/aroma/debug/*.c \ - src/aroma/graph/*.c \ - src/aroma/graph/draw/*.c \ - src/aroma/graph/engine/*.c \ - src/aroma/hid/*.c \ - src/aroma/ui/*.c \ - src/aroma/controls/*.c \ - src/aroma/controls/listitem/*.c \ - \ - $(LIBAROMA_MK_DEVICE_FILES) - $(LIBAROMA_MK_ENGINE_FILES) - - ## - ## includes - ## - LOCAL_C_INCLUDES := \ - $(LIBAROMA_PATH)/include \ - $(LIBAROMA_MK_ZLIB_PATH) \ - $(LIBAROMA_MK_PNG_PATH) \ - $(LIBAROMA_MK_FREETYPE_PATH)/include \ - $(LIBAROMA_MK_HARFBUZZNG_PATH)/src \ - $(LIBAROMA_MK_HARFBUZZNG_PATH)/src/hb-ucdn \ - $(LIBAROMA_MK_MINZIP_PATH) - - ## - ## cflags - ## - LOCAL_CFLAGS := \ - -O3 \ - -ffunction-sections -Wl,--gc-sections \ - -fPIC -DPIC -Wl,-s -Wall -Wextra -Wshadow -Werror -Wno-unused-parameter - - ## - ## static libraries - ## - LOCAL_STATIC_LIBRARIES := \ - libm libc \ - $(LIBAROMA_MK_ZLIB_LIB) \ - $(LIBAROMA_MK_PNG_LIB) \ - $(LIBAROMA_MK_FREETYPE_LIB) \ - $(LIBAROMA_MK_HARFBUZZNG_LIB) \ - $(LIBAROMA_MK_MINZIP_LIB) - - ## - ## arm neon - ## - ifeq ($(ARCH_ARM_HAVE_NEON),true) - AROMA_ARM_NEON := true - LOCAL_SRC_FILES += \ - src/contrib/arm_neon/*.c - - LOCAL_CFLAGS += \ - -D__ARM_HAVE_NEON \ - -mfloat-abi=softfp \ - -mfpu=neon - endif - - ## - ## with jpeg support - ## - ifeq ($(LIBAROMA_MK_WITH_JPEG),true) - LOCAL_STATIC_LIBRARIES += $(LIBAROMA_MK_JPEG_LIB) - LOCAL_C_INCLUDES += $(LIBAROMA_MK_JPEG_PATH) - else - LOCAL_CFLAGS += -DLIBAROMA_CONFIG_NOJPEG=1 - endif - - ## - ## with shared memory framebuffer - ## - LOCAL_CFLAGS += \ - -DLIBAROMA_CONFIG_SHMEMFB=$(LIBAROMA_MK_SHMEMFB) - - ## - ## debugging flags - ## - LOCAL_CFLAGS += \ - -DLIBAROMA_CONFIG_DEBUG=$(LIBAROMA_MK_DEBUG_LEVEL) \ - -DLIBAROMA_CONFIG_DEBUG_FILE=$(LIBAROMA_MK_DEBUG_WITH_FILE) \ - -DLIBAROMA_CONFIG_DEBUG_MEMORY=$(LIBAROMA_MK_DEBUG_MEMORY_LEAK) \ - -DLIBAROMA_CONFIG_COMPILER_MESSAGE=$(LIBAROMA_MK_DEBUG_COMPILER) \ - - ## build as static library - include $(BUILD_STATIC_LIBRARY) - -################################################################################ - -## -## include minzip, harfbuzz-ng, freetype -## -include $(LIBAROMA_PATH)/libs/minzip/Android.mk -include $(LIBAROMA_PATH)/libs/harfbuzz-ng/Android.mk -include $(LIBAROMA_PATH)/libs/freetype/Android.mk - -##[EOF] diff --git a/CMakeLists.txt b/CMakeLists.txt deleted file mode 100644 index 90fa6778..00000000 --- a/CMakeLists.txt +++ /dev/null @@ -1,330 +0,0 @@ -cmake_minimum_required(VERSION 2.8) - -# Project Config -project(libaroma C ASM) - -set(ANDROID_APP_PIE 0) - -# Build Type -if(NOT DEFINED BUILD_TYPE) - set(BUILD_TYPE "Release") -endif() -set( BUILD_TYPE "${BUILD_TYPE}" CACHE STRING "Libaroma Build Type" FORCE ) -set_property( CACHE BUILD_TYPE PROPERTY STRINGS "Release;Debug" ) -SET(CMAKE_BUILD_TYPE "${BUILD_TYPE}") - -execute_process( COMMAND ${CMAKE_C_COMPILER} -dumpmachine OUTPUT_VARIABLE DUMP_MACHINE OUTPUT_STRIP_TRAILING_WHITESPACE) -message("Dump Machine : ${DUMP_MACHINE}") - -# Check Architecture -if(NOT DEFINED ARCHITECTURE) - string(FIND ${DUMP_MACHINE} "-" DUMP_MACHINE_STRIP) - string(SUBSTRING ${DUMP_MACHINE} 0 ${DUMP_MACHINE_STRIP} ARCHITECTURE) -endif() -message("Architecture : ${ARCHITECTURE}") -message("Build Type : ${CMAKE_BUILD_TYPE}") - -# Check Platform -if(NOT DEFINED LIBAROMA_PLATFORM_NAME) - set(LIBAROMA_PLATFORM_NAME "linux") -endif() - -# Platform list -set( LIBAROMA_PLATFORM_NAME "${LIBAROMA_PLATFORM_NAME}" CACHE STRING "Libaroma target platform" FORCE ) -set_property( CACHE LIBAROMA_PLATFORM_NAME PROPERTY STRINGS "linux;qnx;sdl;rpi" ) -message("Platform : ${LIBAROMA_PLATFORM_NAME}") - - -# NO HARFBUZZ List -if(NOT DEFINED LIBAROMA_CONFIG_TEXT_NOHARFBUZZ) - set(LIBAROMA_CONFIG_TEXT_NOHARFBUZZ "DISABLE") -endif() -set( LIBAROMA_CONFIG_TEXT_NOHARFBUZZ "${LIBAROMA_CONFIG_TEXT_NOHARFBUZZ}" CACHE STRING "Compile Without Harfbuzz-ng" FORCE ) -set_property( CACHE LIBAROMA_CONFIG_TEXT_NOHARFBUZZ PROPERTY STRINGS "DISABLE;ENABLE" ) - -# WITH LIBAROMART -if(NOT DEFINED LIBAROMA_WITH_RT) - set(LIBAROMA_WITH_RT "DISABLE") -endif() -set( LIBAROMA_WITH_RT "${LIBAROMA_WITH_RT}" CACHE STRING "Compile With Libaroma RT" FORCE ) -set_property( CACHE LIBAROMA_WITH_RT PROPERTY STRINGS "DISABLE;ENABLE" ) - -# OpenMP List -if(NOT DEFINED LIBAROMA_WITH_OPENMP) - set(LIBAROMA_WITH_OPENMP "ENABLE") -endif() -set( LIBAROMA_WITH_OPENMP "${LIBAROMA_WITH_OPENMP}" CACHE STRING "Force Compile Libaroma with OpenMP" FORCE ) -set_property( CACHE LIBAROMA_WITH_OPENMP PROPERTY STRINGS "DISABLE;ENABLE" ) - -# Libaroma Debug -if(NOT DEFINED LIBAROMA_CONFIG_DEBUG) - set(LIBAROMA_CONFIG_DEBUG "3") -endif() -set( LIBAROMA_CONFIG_DEBUG "${LIBAROMA_CONFIG_DEBUG}" CACHE STRING "Libaroma Debugging Level" FORCE ) -set_property( CACHE LIBAROMA_CONFIG_DEBUG PROPERTY STRINGS "1;2;3;4;5" ) - -# Libaroma Debug File -if(NOT DEFINED LIBAROMA_CONFIG_DEBUG_FILE) - set(LIBAROMA_CONFIG_DEBUG_FILE "0") -endif() -set( LIBAROMA_CONFIG_DEBUG_FILE "${LIBAROMA_CONFIG_DEBUG_FILE}" CACHE STRING "Libaroma Debug with filename for warning/error (1=with filename, 2=with line number)" FORCE ) -set_property( CACHE LIBAROMA_CONFIG_DEBUG_FILE PROPERTY STRINGS "0;1;2" ) - -# Libaroma Debug Memory -if(NOT DEFINED LIBAROMA_CONFIG_DEBUG_MEMORY) - set(LIBAROMA_CONFIG_DEBUG_MEMORY "0") -endif() -set( LIBAROMA_CONFIG_DEBUG_MEMORY "${LIBAROMA_CONFIG_DEBUG_MEMORY}" CACHE STRING "Track memory leaks for libaroma" FORCE ) -set_property( CACHE LIBAROMA_CONFIG_DEBUG_MEMORY PROPERTY STRINGS "0;1" ) - -# Libaroma SHMEMFB -if(NOT DEFINED LIBAROMA_CONFIG_SHMEMFB) - set(LIBAROMA_CONFIG_SHMEMFB "0") -endif() -set( LIBAROMA_CONFIG_SHMEMFB "${LIBAROMA_CONFIG_SHMEMFB}" CACHE STRING "Main canvas in shmem" FORCE ) -set_property( CACHE LIBAROMA_CONFIG_SHMEMFB PROPERTY STRINGS "0;1" ) - -# Libaroma COMPILER MESSAGE -if(NOT DEFINED LIBAROMA_CONFIG_COMPILER_MESSAGE) - set(LIBAROMA_CONFIG_COMPILER_MESSAGE "1") -endif() -set( LIBAROMA_CONFIG_COMPILER_MESSAGE "${LIBAROMA_CONFIG_COMPILER_MESSAGE}" CACHE STRING "Show compiler message" FORCE ) -set_property( CACHE LIBAROMA_CONFIG_COMPILER_MESSAGE PROPERTY STRINGS "0;1" ) - -# Freetype rendering -if(NOT DEFINED LIBAROMA_FONT_RENDERING) - set(LIBAROMA_FONT_RENDERING "SUBPIXEL ANTIALIAS") -endif() -set( LIBAROMA_FONT_RENDERING "${LIBAROMA_FONT_RENDERING}" CACHE STRING "Set freetype font rendering" FORCE ) -set_property( CACHE LIBAROMA_FONT_RENDERING PROPERTY STRINGS "SUBPIXEL ANTIALIAS;ANTIALIAS" ) - -# SHMEM Default prefix -set(LIBAROMA_CONFIG_SHMEM_PREFIX "/libaromashm-") - -# Default link values -if(NOT DEFINED CMAKE_LINK_TYPE) - set(CMAKE_LINK_TYPE STATIC) -endif() - -set( CMAKE_LINK_TYPE "${CMAKE_LINK_TYPE}" CACHE STRING "Link Type" FORCE ) -set_property( CACHE CMAKE_LINK_TYPE PROPERTY STRINGS "STATIC;SHARED" ) - -if("${ARCHITECTURE}" STREQUAL "arm") - if(NOT DEFINED NEON) - set(NEON true) - endif() - if(NOT DEFINED VFPV3) - set(VFPV3 true) - endif() - message("NEON : ${NEON}") - message("VFPV3 : ${VFPV3}") -endif() - -# linkage -if("${CMAKE_LINK_TYPE}" STREQUAL "STATIC") - message("Linkage : STATIC") - set(CMAKE_SKIP_RPATH YES) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static -fno-rtti -fno-exceptions") -else() - message("Linkage : SHARED") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") -endif() - -# release&debug flags -set(CMAKE_C_FLAGS_RELEASE "-O3 -ftree-vectorize -fprefetch-loop-arrays -funsafe-math-optimizations") -set(CMAKE_C_FLAGS_DEBUG "-ggdb") -set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") -set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") - -# detect NDK -if(ANDROID_NDK) - message("Toolchain : ${ANDROID_NDK}") -else() - message("Toolchain : ${CMAKE_C_COMPILER}") -endif() - -# common cflags -set(AROMA_CFLAGS "${AROMA_CFLAGS} -save-temps") -set(AROMA_CFLAGS "${AROMA_CFLAGS} -fdata-sections -ffunction-sections -Wl,--gc-sections") -set(AROMA_CFLAGS "${AROMA_CFLAGS} -D_GLIBCXX_DEBUG_PEDANTIC -D_GLIBCXX_DEBUG") -set(AROMA_CFLAGS "${AROMA_CFLAGS} -fPIC -DPIC -Wl,-s -Wall -Wextra -Wshadow -Wno-unused-parameter") -#set(AROMA_CFLAGS "${AROMA_CFLAGS} -Werror") - -# forced aroma cflags -set(AROMA_CFLAGS "${AROMA_CFLAGS} -DLIBAROMA_CONFIG_DEBUG_TRACE=0") - -# openmp cflags -# TODO: use custom NDK with (static) openmp support -if (((NOT DEFINED ANDROID_NDK) AND ("${CMAKE_LINK_TYPE}" STREQUAL SHARED)) OR (LIBAROMA_WITH_OPENMP STREQUAL ENABLE)) - message("OpenMP Support : ENABLED") - set(AROMA_CFLAGS "${AROMA_CFLAGS} -DLIBAROMA_CONFIG_OPENMP=1") - if("${ARCHITECTURE}" STREQUAL "arm") - set(AROMA_CFLAGS "${AROMA_CFLAGS} -fopenmp") - elseif("${ARCHITECTURE}" STREQUAL "x86_64") - set(AROMA_CFLAGS "${AROMA_CFLAGS} -openmp") - endif() - set(AROMA_OPENMP true) -else() - message("OpenMP Support : DISABLED") - set(AROMA_OPENMP false) -endif() - -if (LIBAROMA_CONFIG_TEXT_NOHARFBUZZ STREQUAL ENABLE) - SET(NOHARFBUZZNG true) - message("Using Harfbuzz-ng : NO") - set(AROMA_CFLAGS "${AROMA_CFLAGS} -DLIBAROMA_CONFIG_TEXT_NOHARFBUZZ=1") -else() - message("Using Harfbuzz-ng : YES") -endif() - -if (LIBAROMA_WITH_RT STREQUAL ENABLE) - SET(WITHAROMART true) - message("With AROMA RUNTIME : YES") -else() - message("With AROMA RUNTIME : NO") -endif() - - -# AROMA config -set(AROMA_CFLAGS "${AROMA_CFLAGS} -DLIBAROMA_CONFIG_DEBUG=${LIBAROMA_CONFIG_DEBUG}") -set(AROMA_CFLAGS "${AROMA_CFLAGS} -DLIBAROMA_CONFIG_DEBUG_FILE=${LIBAROMA_CONFIG_DEBUG_FILE}") -set(AROMA_CFLAGS "${AROMA_CFLAGS} -DLIBAROMA_CONFIG_DEBUG_MEMORY=${LIBAROMA_CONFIG_DEBUG_MEMORY}") -set(AROMA_CFLAGS "${AROMA_CFLAGS} -DLIBAROMA_CONFIG_COMPILER_MESSAGE=${LIBAROMA_CONFIG_COMPILER_MESSAGE}") -set(AROMA_CFLAGS "${AROMA_CFLAGS} -DLIBAROMA_CONFIG_SHMEMFB=${LIBAROMA_CONFIG_SHMEMFB}") -set(AROMA_CFLAGS "${AROMA_CFLAGS} -DLIBAROMA_CONFIG_SHMEM_PREFIX=\\\"${LIBAROMA_CONFIG_SHMEM_PREFIX}\\\"") - -if(LIBAROMA_FONT_RENDERING STREQUAL "ANTIALIAS") - set(AROMA_CFLAGS "${AROMA_CFLAGS} -DLIBAROMA_CONFIG_NOFONT_SUBPIXEL=1") -endif() - -# android -if(DEFINED ANDROID) - message("Android Target : ENABLED") - # if we don't use the NDK these flags are not defined by default - set(AROMA_CFLAGS "${AROMA_CFLAGS} -DANDROID=1 -D__ANDROID__") -else() - message("Android Target : DISABLED") -endif() - -# ARM cflags -if("${ARCHITECTURE}" STREQUAL "arm") - if(NEON OR VFPV3) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mvectorize-with-neon-quad") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mvectorize-with-neon-quad") - endif() - - # NDK has set these flags already - if(NOT DEFINED ANDROID_NDK) - # TODO: check if Toolchain ABI is hard or soft - if(NEON) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfloat-abi=hard -mfpu=neon") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfloat-abi=hard -mfpu=neon") - elseif(VFPV3) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfloat-abi=hard -mfpu=vfpv3") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfloat-abi=hard -mfpu=vfpv3") - endif() - endif() -endif() - -# sources -file(GLOB AROMA_SRCS - ${PROJECT_SOURCE_DIR}/src/contrib/platform/${LIBAROMA_PLATFORM_NAME}/*.c - src/aroma/arch/${ARCHITECTURE}/*.c - src/aroma/arch/${ARCHITECTURE}/*.S - src/aroma/aroma.c - src/aroma/version.c - src/aroma/utils/*.c - src/aroma/debug/*.c - src/aroma/graph/*.c - src/aroma/graph/draw/*.c - src/aroma/graph/engine/*.c - src/aroma/hid/*.c - src/aroma/ui/*.c - src/aroma/controls/*.c - src/aroma/controls/listitem/*.c -) - -# includes -include_directories( - ${PROJECT_SOURCE_DIR}/include - ${PROJECT_SOURCE_DIR}/src - ${PROJECT_SOURCE_DIR}/src/contrib/platform/${LIBAROMA_PLATFORM_NAME}/include - ${PROJECT_SOURCE_DIR}/libs/zlib/src - ${PROJECT_SOURCE_DIR}/libs/freetype/builds - ${PROJECT_SOURCE_DIR}/libs/freetype/include - ${PROJECT_SOURCE_DIR}/libs/minzip - ${PROJECT_SOURCE_DIR}/libs/png - ${PROJECT_SOURCE_DIR}/libs/jpeg - ${PROJECT_SOURCE_DIR}/libs/harfbuzz-ng/src/hb-ucdn - ${PROJECT_SOURCE_DIR}/libs/harfbuzz-ng/src - ${PROJECT_SOURCE_DIR}/libs/squirrel/include - ${PROJECT_SOURCE_DIR}/libs/squirrel/squirrel - ${PROJECT_SOURCE_DIR}/libs/squirrel/sqstdlib -) - - -# aroma -add_library(aroma ${CMAKE_LINK_TYPE} ${AROMA_SRCS}) -set_target_properties(aroma PROPERTIES COMPILE_FLAGS ${AROMA_CFLAGS}) -add_dependencies(aroma z freetype hbucdn minzip png jpeg) -target_link_libraries(aroma z freetype hbucdn minzip png jpeg) - -if (NOT DEFINED NOHARFBUZZNG) - add_dependencies(aroma harfbuzz) - target_link_libraries(aroma harfbuzz) -endif() - -# SDL -# TODO: move to platform module -if("${LIBAROMA_PLATFORM_NAME}" STREQUAL "sdl") - find_package(SDL REQUIRED) - include_directories(${SDL_INCLUDE_DIR}) - target_link_libraries(aroma ${SDL_LIBRARY}) -endif() - -if(AROMA_OPENMP) - target_link_libraries(aroma gomp) -endif() - -if(NOT DEFINED ANDROID_NDK) - # NDK uses a integrated pthreads API - target_link_libraries(aroma pthread) - target_link_libraries(aroma rt) -endif() - -# subdirs -add_subdirectory(libs/zlib) -add_subdirectory(libs/freetype) -add_subdirectory(libs/harfbuzz-ng) -add_subdirectory(libs/harfbuzz-ng/src/hb-ucdn) -add_subdirectory(libs/minzip) -add_subdirectory(libs/png) -add_subdirectory(libs/jpeg) - - -if (DEFINED WITHAROMART) - add_subdirectory(libs/squirrel) - # aromart - file(GLOB AROMART_SRCS src/aromart/*.c) - add_library(aromart ${CMAKE_LINK_TYPE} ${AROMART_SRCS}) - add_dependencies(aromart aroma squirrel) - target_link_libraries(aromart aroma squirrel) - - # aromart_test - file(GLOB AROMART_TEST_SRCS examples/rt_test/*.c) - add_executable(aromart_test ${AROMART_TEST_SRCS}) - target_link_libraries(aromart_test aromart) -endif() - -# libaroma_test -file(GLOB LIBAROMA_TEST_SRCS examples/recovery/*.c) -include_directories( - ${PROJECT_SOURCE_DIR}/examples/recovery -) -add_executable(libaroma_test ${LIBAROMA_TEST_SRCS}) -target_link_libraries(libaroma_test aroma) - -message("CFLAGS : ${CMAKE_C_FLAGS}") -message("CXXFLAGS : ${CMAKE_CXX_FLAGS}") diff --git a/android.toolchain.cmake b/android.toolchain.cmake deleted file mode 100644 index cb8bdb5c..00000000 --- a/android.toolchain.cmake +++ /dev/null @@ -1,1693 +0,0 @@ -# Copyright (c) 2010-2011, Ethan Rublee -# Copyright (c) 2011-2014, Andrey Kamaev -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# 1. Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# 3. Neither the name of the copyright holder nor the names of its -# contributors may be used to endorse or promote products derived from this -# software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - -# ------------------------------------------------------------------------------ -# Android CMake toolchain file, for use with the Android NDK r5-r10d -# Requires cmake 2.6.3 or newer (2.8.9 or newer is recommended). -# See home page: https://github.com/taka-no-me/android-cmake -# -# Usage Linux: -# $ export ANDROID_NDK=/absolute/path/to/the/android-ndk -# $ mkdir build && cd build -# $ cmake -DCMAKE_TOOLCHAIN_FILE=path/to/the/android.toolchain.cmake .. -# $ make -j8 -# -# Usage Windows: -# You need native port of make to build your project. -# Android NDK r7 (and newer) already has make.exe on board. -# For older NDK you have to install it separately. -# For example, this one: http://gnuwin32.sourceforge.net/packages/make.htm -# -# $ SET ANDROID_NDK=C:\absolute\path\to\the\android-ndk -# $ mkdir build && cd build -# $ cmake.exe -G"MinGW Makefiles" -# -DCMAKE_TOOLCHAIN_FILE=path\to\the\android.toolchain.cmake -# -DCMAKE_MAKE_PROGRAM="%ANDROID_NDK%\prebuilt\windows\bin\make.exe" .. -# $ cmake.exe --build . -# -# -# Options (can be set as cmake parameters: -D=): -# ANDROID_NDK=/opt/android-ndk - path to the NDK root. -# Can be set as environment variable. Can be set only at first cmake run. -# -# ANDROID_ABI=armeabi-v7a - specifies the target Application Binary -# Interface (ABI). This option nearly matches to the APP_ABI variable -# used by ndk-build tool from Android NDK. -# -# Possible targets are: -# "armeabi" - ARMv5TE based CPU with software floating point operations -# "armeabi-v7a" - ARMv7 based devices with hardware FPU instructions -# this ABI target is used by default -# "armeabi-v7a with NEON" - same as armeabi-v7a, but -# sets NEON as floating-point unit -# "armeabi-v7a with VFPV3" - same as armeabi-v7a, but -# sets VFPV3 as floating-point unit (has 32 registers instead of 16) -# "armeabi-v6 with VFP" - tuned for ARMv6 processors having VFP -# "x86" - IA-32 instruction set -# "mips" - MIPS32 instruction set -# -# 64-bit ABIs for NDK r10 and newer: -# "arm64-v8a" - ARMv8 AArch64 instruction set -# "x86_64" - Intel64 instruction set (r1) -# "mips64" - MIPS64 instruction set (r6) -# -# ANDROID_NATIVE_API_LEVEL=android-8 - level of Android API compile for. -# Option is read-only when standalone toolchain is used. -# Note: building for "android-L" requires explicit configuration. -# -# ANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-4.9 - the name of compiler -# toolchain to be used. The list of possible values depends on the NDK -# version. For NDK r10c the possible values are: -# -# * aarch64-linux-android-4.9 -# * aarch64-linux-android-clang3.4 -# * aarch64-linux-android-clang3.5 -# * arm-linux-androideabi-4.6 -# * arm-linux-androideabi-4.8 -# * arm-linux-androideabi-4.9 (default) -# * arm-linux-androideabi-clang3.4 -# * arm-linux-androideabi-clang3.5 -# * mips64el-linux-android-4.9 -# * mips64el-linux-android-clang3.4 -# * mips64el-linux-android-clang3.5 -# * mipsel-linux-android-4.6 -# * mipsel-linux-android-4.8 -# * mipsel-linux-android-4.9 -# * mipsel-linux-android-clang3.4 -# * mipsel-linux-android-clang3.5 -# * x86-4.6 -# * x86-4.8 -# * x86-4.9 -# * x86-clang3.4 -# * x86-clang3.5 -# * x86_64-4.9 -# * x86_64-clang3.4 -# * x86_64-clang3.5 -# -# ANDROID_FORCE_ARM_BUILD=OFF - set ON to generate 32-bit ARM instructions -# instead of Thumb. Is not available for "armeabi-v6 with VFP" -# (is forced to be ON) ABI. -# -# ANDROID_NO_UNDEFINED=ON - set ON to show all undefined symbols as linker -# errors even if they are not used. -# -# ANDROID_SO_UNDEFINED=OFF - set ON to allow undefined symbols in shared -# libraries. Automatically turned for NDK r5x and r6x due to GLESv2 -# problems. -# -# ANDROID_STL=gnustl_static - specify the runtime to use. -# -# Possible values are: -# none -> Do not configure the runtime. -# system -> Use the default minimal system C++ runtime library. -# Implies -fno-rtti -fno-exceptions. -# Is not available for standalone toolchain. -# system_re -> Use the default minimal system C++ runtime library. -# Implies -frtti -fexceptions. -# Is not available for standalone toolchain. -# gabi++_static -> Use the GAbi++ runtime as a static library. -# Implies -frtti -fno-exceptions. -# Available for NDK r7 and newer. -# Is not available for standalone toolchain. -# gabi++_shared -> Use the GAbi++ runtime as a shared library. -# Implies -frtti -fno-exceptions. -# Available for NDK r7 and newer. -# Is not available for standalone toolchain. -# stlport_static -> Use the STLport runtime as a static library. -# Implies -fno-rtti -fno-exceptions for NDK before r7. -# Implies -frtti -fno-exceptions for NDK r7 and newer. -# Is not available for standalone toolchain. -# stlport_shared -> Use the STLport runtime as a shared library. -# Implies -fno-rtti -fno-exceptions for NDK before r7. -# Implies -frtti -fno-exceptions for NDK r7 and newer. -# Is not available for standalone toolchain. -# gnustl_static -> Use the GNU STL as a static library. -# Implies -frtti -fexceptions. -# gnustl_shared -> Use the GNU STL as a shared library. -# Implies -frtti -fno-exceptions. -# Available for NDK r7b and newer. -# Silently degrades to gnustl_static if not available. -# -# ANDROID_STL_FORCE_FEATURES=ON - turn rtti and exceptions support based on -# chosen runtime. If disabled, then the user is responsible for settings -# these options. -# -# What?: -# android-cmake toolchain searches for NDK/toolchain in the following order: -# ANDROID_NDK - cmake parameter -# ANDROID_NDK - environment variable -# ANDROID_STANDALONE_TOOLCHAIN - cmake parameter -# ANDROID_STANDALONE_TOOLCHAIN - environment variable -# ANDROID_NDK - default locations -# ANDROID_STANDALONE_TOOLCHAIN - default locations -# -# Make sure to do the following in your scripts: -# SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${my_cxx_flags}" ) -# SET( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${my_cxx_flags}" ) -# The flags will be prepopulated with critical flags, so don't loose them. -# Also be aware that toolchain also sets configuration-specific compiler -# flags and linker flags. -# -# ANDROID and BUILD_ANDROID will be set to true, you may test any of these -# variables to make necessary Android-specific configuration changes. -# -# Also ARMEABI or ARMEABI_V7A or X86 or MIPS or ARM64_V8A or X86_64 or MIPS64 -# will be set true, mutually exclusive. NEON option will be set true -# if VFP is set to NEON. -# -# ------------------------------------------------------------------------------ - -cmake_minimum_required( VERSION 2.6.3 ) - -if( DEFINED CMAKE_CROSSCOMPILING ) - # subsequent toolchain loading is not really needed - return() -endif() - -if( CMAKE_TOOLCHAIN_FILE ) - # touch toolchain variable to suppress "unused variable" warning -endif() - -# inherit settings in recursive loads -get_property( _CMAKE_IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE ) -if( _CMAKE_IN_TRY_COMPILE ) - include( "${CMAKE_CURRENT_SOURCE_DIR}/../android.toolchain.config.cmake" OPTIONAL ) -endif() - -# this one is important -if( CMAKE_VERSION VERSION_GREATER "3.0.99" ) - set( CMAKE_SYSTEM_NAME Android ) -else() - set( CMAKE_SYSTEM_NAME Linux ) -endif() - -# this one not so much -set( CMAKE_SYSTEM_VERSION 1 ) - -# rpath makes low sense for Android -set( CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "" ) -set( CMAKE_SKIP_RPATH TRUE CACHE BOOL "If set, runtime paths are not added when using shared libraries." ) - -# NDK search paths -set( ANDROID_SUPPORTED_NDK_VERSIONS ${ANDROID_EXTRA_NDK_VERSIONS} -r10e -r10d -r10c -r10b -r10 -r9d -r9c -r9b -r9 -r8e -r8d -r8c -r8b -r8 -r7c -r7b -r7 -r6b -r6 -r5c -r5b -r5 "" ) -if( NOT DEFINED ANDROID_NDK_SEARCH_PATHS ) - if( CMAKE_HOST_WIN32 ) - file( TO_CMAKE_PATH "$ENV{PROGRAMFILES}" ANDROID_NDK_SEARCH_PATHS ) - set( ANDROID_NDK_SEARCH_PATHS "${ANDROID_NDK_SEARCH_PATHS}" "$ENV{SystemDrive}/NVPACK" ) - else() - file( TO_CMAKE_PATH "$ENV{HOME}" ANDROID_NDK_SEARCH_PATHS ) - set( ANDROID_NDK_SEARCH_PATHS /opt "${ANDROID_NDK_SEARCH_PATHS}/NVPACK" ) - endif() -endif() -if( NOT DEFINED ANDROID_STANDALONE_TOOLCHAIN_SEARCH_PATH ) - set( ANDROID_STANDALONE_TOOLCHAIN_SEARCH_PATH /opt/android-toolchain ) -endif() - -# known ABIs -set( ANDROID_SUPPORTED_ABIS_arm "armeabi-v7a;armeabi;armeabi-v7a with NEON;armeabi-v7a with VFPV3;armeabi-v6 with VFP" ) -set( ANDROID_SUPPORTED_ABIS_arm64 "arm64-v8a" ) -set( ANDROID_SUPPORTED_ABIS_x86 "x86" ) -set( ANDROID_SUPPORTED_ABIS_x86_64 "x86_64" ) -set( ANDROID_SUPPORTED_ABIS_mips "mips" ) -set( ANDROID_SUPPORTED_ABIS_mips64 "mips64" ) - -# API level defaults -set( ANDROID_DEFAULT_NDK_API_LEVEL 8 ) -set( ANDROID_DEFAULT_NDK_API_LEVEL_arm64 21 ) -set( ANDROID_DEFAULT_NDK_API_LEVEL_x86 9 ) -set( ANDROID_DEFAULT_NDK_API_LEVEL_x86_64 21 ) -set( ANDROID_DEFAULT_NDK_API_LEVEL_mips 9 ) -set( ANDROID_DEFAULT_NDK_API_LEVEL_mips64 21 ) - - -macro( __LIST_FILTER listvar regex ) - if( ${listvar} ) - foreach( __val ${${listvar}} ) - if( __val MATCHES "${regex}" ) - list( REMOVE_ITEM ${listvar} "${__val}" ) - endif() - endforeach() - endif() -endmacro() - -macro( __INIT_VARIABLE var_name ) - set( __test_path 0 ) - foreach( __var ${ARGN} ) - if( __var STREQUAL "PATH" ) - set( __test_path 1 ) - break() - endif() - endforeach() - - if( __test_path AND NOT EXISTS "${${var_name}}" ) - unset( ${var_name} CACHE ) - endif() - - if( " ${${var_name}}" STREQUAL " " ) - set( __values 0 ) - foreach( __var ${ARGN} ) - if( __var STREQUAL "VALUES" ) - set( __values 1 ) - elseif( NOT __var STREQUAL "PATH" ) - if( __var MATCHES "^ENV_.*$" ) - string( REPLACE "ENV_" "" __var "${__var}" ) - set( __value "$ENV{${__var}}" ) - elseif( DEFINED ${__var} ) - set( __value "${${__var}}" ) - elseif( __values ) - set( __value "${__var}" ) - else() - set( __value "" ) - endif() - - if( NOT " ${__value}" STREQUAL " " AND (NOT __test_path OR EXISTS "${__value}") ) - set( ${var_name} "${__value}" ) - break() - endif() - endif() - endforeach() - unset( __value ) - unset( __values ) - endif() - - if( __test_path ) - file( TO_CMAKE_PATH "${${var_name}}" ${var_name} ) - endif() - unset( __test_path ) -endmacro() - -macro( __DETECT_NATIVE_API_LEVEL _var _path ) - set( __ndkApiLevelRegex "^[\t ]*#define[\t ]+__ANDROID_API__[\t ]+([0-9]+)[\t ]*.*$" ) - file( STRINGS ${_path} __apiFileContent REGEX "${__ndkApiLevelRegex}" ) - if( NOT __apiFileContent ) - message( SEND_ERROR "Could not get Android native API level. Probably you have specified invalid level value, or your copy of NDK/toolchain is broken." ) - endif() - string( REGEX REPLACE "${__ndkApiLevelRegex}" "\\1" ${_var} "${__apiFileContent}" ) - unset( __apiFileContent ) - unset( __ndkApiLevelRegex ) -endmacro() - -macro( __DETECT_TOOLCHAIN_MACHINE_NAME _var _root ) - if( EXISTS "${_root}" ) - file( GLOB __gccExePath RELATIVE "${_root}/bin/" "${_root}/bin/*-gcc${TOOL_OS_SUFFIX}" ) - __LIST_FILTER( __gccExePath "^[.].*" ) - list( LENGTH __gccExePath __gccExePathsCount ) - if( NOT __gccExePathsCount EQUAL 1 AND NOT _CMAKE_IN_TRY_COMPILE ) - message( WARNING "Could not determine machine name for compiler from ${_root}" ) - set( ${_var} "" ) - else() - get_filename_component( __gccExeName "${__gccExePath}" NAME_WE ) - string( REPLACE "-gcc" "" ${_var} "${__gccExeName}" ) - endif() - unset( __gccExePath ) - unset( __gccExePathsCount ) - unset( __gccExeName ) - else() - set( ${_var} "" ) - endif() -endmacro() - - -# fight against cygwin -set( ANDROID_FORBID_SYGWIN TRUE CACHE BOOL "Prevent cmake from working under cygwin and using cygwin tools") -mark_as_advanced( ANDROID_FORBID_SYGWIN ) -if( ANDROID_FORBID_SYGWIN ) - if( CYGWIN ) - message( FATAL_ERROR "Android NDK and android-cmake toolchain are not welcome Cygwin. It is unlikely that this cmake toolchain will work under cygwin. But if you want to try then you can set cmake variable ANDROID_FORBID_SYGWIN to FALSE and rerun cmake." ) - endif() - - if( CMAKE_HOST_WIN32 ) - # remove cygwin from PATH - set( __new_path "$ENV{PATH}") - __LIST_FILTER( __new_path "cygwin" ) - set(ENV{PATH} "${__new_path}") - unset(__new_path) - endif() -endif() - - -# detect current host platform -if( NOT DEFINED ANDROID_NDK_HOST_X64 AND (CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "amd64|x86_64|AMD64" OR CMAKE_HOST_APPLE) ) - set( ANDROID_NDK_HOST_X64 1 CACHE BOOL "Try to use 64-bit compiler toolchain" ) - mark_as_advanced( ANDROID_NDK_HOST_X64 ) -endif() - -set( TOOL_OS_SUFFIX "" ) -if( CMAKE_HOST_APPLE ) - set( ANDROID_NDK_HOST_SYSTEM_NAME "darwin-x86_64" ) - set( ANDROID_NDK_HOST_SYSTEM_NAME2 "darwin-x86" ) -elseif( CMAKE_HOST_WIN32 ) - set( ANDROID_NDK_HOST_SYSTEM_NAME "windows-x86_64" ) - set( ANDROID_NDK_HOST_SYSTEM_NAME2 "windows" ) - set( TOOL_OS_SUFFIX ".exe" ) -elseif( CMAKE_HOST_UNIX ) - set( ANDROID_NDK_HOST_SYSTEM_NAME "linux-x86_64" ) - set( ANDROID_NDK_HOST_SYSTEM_NAME2 "linux-x86" ) -else() - message( FATAL_ERROR "Cross-compilation on your platform is not supported by this cmake toolchain" ) -endif() - -if( NOT ANDROID_NDK_HOST_X64 ) - set( ANDROID_NDK_HOST_SYSTEM_NAME ${ANDROID_NDK_HOST_SYSTEM_NAME2} ) -endif() - -# see if we have path to Android NDK -if( NOT ANDROID_NDK AND NOT ANDROID_STANDALONE_TOOLCHAIN ) - __INIT_VARIABLE( ANDROID_NDK PATH ENV_ANDROID_NDK ) -endif() -if( NOT ANDROID_NDK ) - # see if we have path to Android standalone toolchain - __INIT_VARIABLE( ANDROID_STANDALONE_TOOLCHAIN PATH ENV_ANDROID_STANDALONE_TOOLCHAIN ) - - if( NOT ANDROID_STANDALONE_TOOLCHAIN ) - #try to find Android NDK in one of the the default locations - set( __ndkSearchPaths ) - foreach( __ndkSearchPath ${ANDROID_NDK_SEARCH_PATHS} ) - foreach( suffix ${ANDROID_SUPPORTED_NDK_VERSIONS} ) - list( APPEND __ndkSearchPaths "${__ndkSearchPath}/android-ndk${suffix}" ) - endforeach() - endforeach() - __INIT_VARIABLE( ANDROID_NDK PATH VALUES ${__ndkSearchPaths} ) - unset( __ndkSearchPaths ) - - if( ANDROID_NDK ) - message( STATUS "Using default path for Android NDK: ${ANDROID_NDK}" ) - message( STATUS " If you prefer to use a different location, please define a cmake or environment variable: ANDROID_NDK" ) - else() - #try to find Android standalone toolchain in one of the the default locations - __INIT_VARIABLE( ANDROID_STANDALONE_TOOLCHAIN PATH ANDROID_STANDALONE_TOOLCHAIN_SEARCH_PATH ) - - if( ANDROID_STANDALONE_TOOLCHAIN ) - message( STATUS "Using default path for standalone toolchain ${ANDROID_STANDALONE_TOOLCHAIN}" ) - message( STATUS " If you prefer to use a different location, please define the variable: ANDROID_STANDALONE_TOOLCHAIN" ) - endif( ANDROID_STANDALONE_TOOLCHAIN ) - endif( ANDROID_NDK ) - endif( NOT ANDROID_STANDALONE_TOOLCHAIN ) -endif( NOT ANDROID_NDK ) - -# remember found paths -if( ANDROID_NDK ) - get_filename_component( ANDROID_NDK "${ANDROID_NDK}" ABSOLUTE ) - set( ANDROID_NDK "${ANDROID_NDK}" CACHE INTERNAL "Path of the Android NDK" FORCE ) - set( BUILD_WITH_ANDROID_NDK True ) - if( EXISTS "${ANDROID_NDK}/RELEASE.TXT" ) - file( STRINGS "${ANDROID_NDK}/RELEASE.TXT" ANDROID_NDK_RELEASE_FULL LIMIT_COUNT 1 REGEX "r[0-9]+[a-z]?" ) - string( REGEX MATCH "r([0-9]+)([a-z]?)" ANDROID_NDK_RELEASE "${ANDROID_NDK_RELEASE_FULL}" ) - else() - set( ANDROID_NDK_RELEASE "r1x" ) - set( ANDROID_NDK_RELEASE_FULL "unreleased" ) - endif() - string( REGEX REPLACE "r([0-9]+)([a-z]?)" "\\1*1000" ANDROID_NDK_RELEASE_NUM "${ANDROID_NDK_RELEASE}" ) - string( FIND " abcdefghijklmnopqastuvwxyz" "${CMAKE_MATCH_2}" __ndkReleaseLetterNum ) - math( EXPR ANDROID_NDK_RELEASE_NUM "${ANDROID_NDK_RELEASE_NUM}+${__ndkReleaseLetterNum}" ) -elseif( ANDROID_STANDALONE_TOOLCHAIN ) - get_filename_component( ANDROID_STANDALONE_TOOLCHAIN "${ANDROID_STANDALONE_TOOLCHAIN}" ABSOLUTE ) - # try to detect change - if( CMAKE_AR ) - string( LENGTH "${ANDROID_STANDALONE_TOOLCHAIN}" __length ) - string( SUBSTRING "${CMAKE_AR}" 0 ${__length} __androidStandaloneToolchainPreviousPath ) - if( NOT __androidStandaloneToolchainPreviousPath STREQUAL ANDROID_STANDALONE_TOOLCHAIN ) - message( FATAL_ERROR "It is not possible to change path to the Android standalone toolchain on subsequent run." ) - endif() - unset( __androidStandaloneToolchainPreviousPath ) - unset( __length ) - endif() - set( ANDROID_STANDALONE_TOOLCHAIN "${ANDROID_STANDALONE_TOOLCHAIN}" CACHE INTERNAL "Path of the Android standalone toolchain" FORCE ) - set( BUILD_WITH_STANDALONE_TOOLCHAIN True ) -else() - list(GET ANDROID_NDK_SEARCH_PATHS 0 ANDROID_NDK_SEARCH_PATH) - message( FATAL_ERROR "Could not find neither Android NDK nor Android standalone toolchain. - You should either set an environment variable: - export ANDROID_NDK=~/my-android-ndk - or - export ANDROID_STANDALONE_TOOLCHAIN=~/my-android-toolchain - or put the toolchain or NDK in the default path: - sudo ln -s ~/my-android-ndk ${ANDROID_NDK_SEARCH_PATH}/android-ndk - sudo ln -s ~/my-android-toolchain ${ANDROID_STANDALONE_TOOLCHAIN_SEARCH_PATH}" ) -endif() - -# android NDK layout -if( BUILD_WITH_ANDROID_NDK ) - if( NOT DEFINED ANDROID_NDK_LAYOUT ) - # try to automatically detect the layout - if( EXISTS "${ANDROID_NDK}/RELEASE.TXT") - set( ANDROID_NDK_LAYOUT "RELEASE" ) - elseif( EXISTS "${ANDROID_NDK}/../../linux-x86/toolchain/" ) - set( ANDROID_NDK_LAYOUT "LINARO" ) - elseif( EXISTS "${ANDROID_NDK}/../../gcc/" ) - set( ANDROID_NDK_LAYOUT "ANDROID" ) - endif() - endif() - set( ANDROID_NDK_LAYOUT "${ANDROID_NDK_LAYOUT}" CACHE STRING "The inner layout of NDK" ) - mark_as_advanced( ANDROID_NDK_LAYOUT ) - if( ANDROID_NDK_LAYOUT STREQUAL "LINARO" ) - set( ANDROID_NDK_HOST_SYSTEM_NAME ${ANDROID_NDK_HOST_SYSTEM_NAME2} ) # only 32-bit at the moment - set( ANDROID_NDK_TOOLCHAINS_PATH "${ANDROID_NDK}/../../${ANDROID_NDK_HOST_SYSTEM_NAME}/toolchain" ) - set( ANDROID_NDK_TOOLCHAINS_SUBPATH "" ) - set( ANDROID_NDK_TOOLCHAINS_SUBPATH2 "" ) - elseif( ANDROID_NDK_LAYOUT STREQUAL "ANDROID" ) - set( ANDROID_NDK_HOST_SYSTEM_NAME ${ANDROID_NDK_HOST_SYSTEM_NAME2} ) # only 32-bit at the moment - set( ANDROID_NDK_TOOLCHAINS_PATH "${ANDROID_NDK}/../../gcc/${ANDROID_NDK_HOST_SYSTEM_NAME}/arm" ) - set( ANDROID_NDK_TOOLCHAINS_SUBPATH "" ) - set( ANDROID_NDK_TOOLCHAINS_SUBPATH2 "" ) - else() # ANDROID_NDK_LAYOUT STREQUAL "RELEASE" - set( ANDROID_NDK_TOOLCHAINS_PATH "${ANDROID_NDK}/toolchains" ) - set( ANDROID_NDK_TOOLCHAINS_SUBPATH "/prebuilt/${ANDROID_NDK_HOST_SYSTEM_NAME}" ) - set( ANDROID_NDK_TOOLCHAINS_SUBPATH2 "/prebuilt/${ANDROID_NDK_HOST_SYSTEM_NAME2}" ) - endif() - get_filename_component( ANDROID_NDK_TOOLCHAINS_PATH "${ANDROID_NDK_TOOLCHAINS_PATH}" ABSOLUTE ) - - # try to detect change of NDK - if( CMAKE_AR ) - string( LENGTH "${ANDROID_NDK_TOOLCHAINS_PATH}" __length ) - string( SUBSTRING "${CMAKE_AR}" 0 ${__length} __androidNdkPreviousPath ) - if( NOT __androidNdkPreviousPath STREQUAL ANDROID_NDK_TOOLCHAINS_PATH ) - message( FATAL_ERROR "It is not possible to change the path to the NDK on subsequent CMake run. You must remove all generated files from your build folder first. - " ) - endif() - unset( __androidNdkPreviousPath ) - unset( __length ) - endif() -endif() - - -# get all the details about standalone toolchain -if( BUILD_WITH_STANDALONE_TOOLCHAIN ) - __DETECT_NATIVE_API_LEVEL( ANDROID_SUPPORTED_NATIVE_API_LEVELS "${ANDROID_STANDALONE_TOOLCHAIN}/sysroot/usr/include/android/api-level.h" ) - set( ANDROID_STANDALONE_TOOLCHAIN_API_LEVEL ${ANDROID_SUPPORTED_NATIVE_API_LEVELS} ) - set( __availableToolchains "standalone" ) - __DETECT_TOOLCHAIN_MACHINE_NAME( __availableToolchainMachines "${ANDROID_STANDALONE_TOOLCHAIN}" ) - if( NOT __availableToolchainMachines ) - message( FATAL_ERROR "Could not determine machine name of your toolchain. Probably your Android standalone toolchain is broken." ) - endif() - if( __availableToolchainMachines MATCHES x86_64 ) - set( __availableToolchainArchs "x86_64" ) - elseif( __availableToolchainMachines MATCHES i686 ) - set( __availableToolchainArchs "x86" ) - elseif( __availableToolchainMachines MATCHES aarch64 ) - set( __availableToolchainArchs "arm64" ) - elseif( __availableToolchainMachines MATCHES arm ) - set( __availableToolchainArchs "arm" ) - elseif( __availableToolchainMachines MATCHES mips64el ) - set( __availableToolchainArchs "mips64" ) - elseif( __availableToolchainMachines MATCHES mipsel ) - set( __availableToolchainArchs "mips" ) - endif() - execute_process( COMMAND "${ANDROID_STANDALONE_TOOLCHAIN}/bin/${__availableToolchainMachines}-gcc${TOOL_OS_SUFFIX}" -dumpversion - OUTPUT_VARIABLE __availableToolchainCompilerVersions OUTPUT_STRIP_TRAILING_WHITESPACE ) - string( REGEX MATCH "[0-9]+[.][0-9]+([.][0-9]+)?" __availableToolchainCompilerVersions "${__availableToolchainCompilerVersions}" ) - if( EXISTS "${ANDROID_STANDALONE_TOOLCHAIN}/bin/clang${TOOL_OS_SUFFIX}" ) - list( APPEND __availableToolchains "standalone-clang" ) - list( APPEND __availableToolchainMachines ${__availableToolchainMachines} ) - list( APPEND __availableToolchainArchs ${__availableToolchainArchs} ) - list( APPEND __availableToolchainCompilerVersions ${__availableToolchainCompilerVersions} ) - endif() -endif() - -macro( __GLOB_NDK_TOOLCHAINS __availableToolchainsVar __availableToolchainsLst __toolchain_subpath ) - foreach( __toolchain ${${__availableToolchainsLst}} ) - if( "${__toolchain}" MATCHES "-clang3[.][0-9]$" AND NOT EXISTS "${ANDROID_NDK_TOOLCHAINS_PATH}/${__toolchain}${__toolchain_subpath}" ) - SET( __toolchainVersionRegex "^TOOLCHAIN_VERSION[\t ]+:=[\t ]+(.*)$" ) - FILE( STRINGS "${ANDROID_NDK_TOOLCHAINS_PATH}/${__toolchain}/setup.mk" __toolchainVersionStr REGEX "${__toolchainVersionRegex}" ) - if( __toolchainVersionStr ) - string( REGEX REPLACE "${__toolchainVersionRegex}" "\\1" __toolchainVersionStr "${__toolchainVersionStr}" ) - string( REGEX REPLACE "-clang3[.][0-9]$" "-${__toolchainVersionStr}" __gcc_toolchain "${__toolchain}" ) - else() - string( REGEX REPLACE "-clang3[.][0-9]$" "-4.6" __gcc_toolchain "${__toolchain}" ) - endif() - unset( __toolchainVersionStr ) - unset( __toolchainVersionRegex ) - else() - set( __gcc_toolchain "${__toolchain}" ) - endif() - __DETECT_TOOLCHAIN_MACHINE_NAME( __machine "${ANDROID_NDK_TOOLCHAINS_PATH}/${__gcc_toolchain}${__toolchain_subpath}" ) - if( __machine ) - string( REGEX MATCH "[0-9]+[.][0-9]+([.][0-9x]+)?$" __version "${__gcc_toolchain}" ) - if( __machine MATCHES x86_64 ) - set( __arch "x86_64" ) - elseif( __machine MATCHES i686 ) - set( __arch "x86" ) - elseif( __machine MATCHES aarch64 ) - set( __arch "arm64" ) - elseif( __machine MATCHES arm ) - set( __arch "arm" ) - elseif( __machine MATCHES mips64el ) - set( __arch "mips64" ) - elseif( __machine MATCHES mipsel ) - set( __arch "mips" ) - else() - set( __arch "" ) - endif() - #message("machine: !${__machine}!\narch: !${__arch}!\nversion: !${__version}!\ntoolchain: !${__toolchain}!\n") - if (__arch) - list( APPEND __availableToolchainMachines "${__machine}" ) - list( APPEND __availableToolchainArchs "${__arch}" ) - list( APPEND __availableToolchainCompilerVersions "${__version}" ) - list( APPEND ${__availableToolchainsVar} "${__toolchain}" ) - endif() - endif() - unset( __gcc_toolchain ) - endforeach() -endmacro() - -# get all the details about NDK -if( BUILD_WITH_ANDROID_NDK ) - file( GLOB ANDROID_SUPPORTED_NATIVE_API_LEVELS RELATIVE "${ANDROID_NDK}/platforms" "${ANDROID_NDK}/platforms/android-*" ) - string( REPLACE "android-" "" ANDROID_SUPPORTED_NATIVE_API_LEVELS "${ANDROID_SUPPORTED_NATIVE_API_LEVELS}" ) - set( __availableToolchains "" ) - set( __availableToolchainMachines "" ) - set( __availableToolchainArchs "" ) - set( __availableToolchainCompilerVersions "" ) - if( ANDROID_TOOLCHAIN_NAME AND EXISTS "${ANDROID_NDK_TOOLCHAINS_PATH}/${ANDROID_TOOLCHAIN_NAME}/" ) - # do not go through all toolchains if we know the name - set( __availableToolchainsLst "${ANDROID_TOOLCHAIN_NAME}" ) - __GLOB_NDK_TOOLCHAINS( __availableToolchains __availableToolchainsLst "${ANDROID_NDK_TOOLCHAINS_SUBPATH}" ) - if( NOT __availableToolchains AND NOT ANDROID_NDK_TOOLCHAINS_SUBPATH STREQUAL ANDROID_NDK_TOOLCHAINS_SUBPATH2 ) - __GLOB_NDK_TOOLCHAINS( __availableToolchains __availableToolchainsLst "${ANDROID_NDK_TOOLCHAINS_SUBPATH2}" ) - if( __availableToolchains ) - set( ANDROID_NDK_TOOLCHAINS_SUBPATH ${ANDROID_NDK_TOOLCHAINS_SUBPATH2} ) - endif() - endif() - endif() - if( NOT __availableToolchains ) - file( GLOB __availableToolchainsLst RELATIVE "${ANDROID_NDK_TOOLCHAINS_PATH}" "${ANDROID_NDK_TOOLCHAINS_PATH}/*" ) - if( __availableToolchainsLst ) - list(SORT __availableToolchainsLst) # we need clang to go after gcc - endif() - __LIST_FILTER( __availableToolchainsLst "^[.]" ) - __LIST_FILTER( __availableToolchainsLst "llvm" ) - __LIST_FILTER( __availableToolchainsLst "renderscript" ) - __GLOB_NDK_TOOLCHAINS( __availableToolchains __availableToolchainsLst "${ANDROID_NDK_TOOLCHAINS_SUBPATH}" ) - if( NOT __availableToolchains AND NOT ANDROID_NDK_TOOLCHAINS_SUBPATH STREQUAL ANDROID_NDK_TOOLCHAINS_SUBPATH2 ) - __GLOB_NDK_TOOLCHAINS( __availableToolchains __availableToolchainsLst "${ANDROID_NDK_TOOLCHAINS_SUBPATH2}" ) - if( __availableToolchains ) - set( ANDROID_NDK_TOOLCHAINS_SUBPATH ${ANDROID_NDK_TOOLCHAINS_SUBPATH2} ) - endif() - endif() - endif() - if( NOT __availableToolchains ) - message( FATAL_ERROR "Could not find any working toolchain in the NDK. Probably your Android NDK is broken." ) - endif() -endif() - -# build list of available ABIs -set( ANDROID_SUPPORTED_ABIS "" ) -set( __uniqToolchainArchNames ${__availableToolchainArchs} ) -list( REMOVE_DUPLICATES __uniqToolchainArchNames ) -list( SORT __uniqToolchainArchNames ) -foreach( __arch ${__uniqToolchainArchNames} ) - list( APPEND ANDROID_SUPPORTED_ABIS ${ANDROID_SUPPORTED_ABIS_${__arch}} ) -endforeach() -unset( __uniqToolchainArchNames ) -if( NOT ANDROID_SUPPORTED_ABIS ) - message( FATAL_ERROR "No one of known Android ABIs is supported by this cmake toolchain." ) -endif() - -# choose target ABI -__INIT_VARIABLE( ANDROID_ABI VALUES ${ANDROID_SUPPORTED_ABIS} ) -# verify that target ABI is supported -list( FIND ANDROID_SUPPORTED_ABIS "${ANDROID_ABI}" __androidAbiIdx ) -if( __androidAbiIdx EQUAL -1 ) - string( REPLACE ";" "\", \"" PRINTABLE_ANDROID_SUPPORTED_ABIS "${ANDROID_SUPPORTED_ABIS}" ) - message( FATAL_ERROR "Specified ANDROID_ABI = \"${ANDROID_ABI}\" is not supported by this cmake toolchain or your NDK/toolchain. - Supported values are: \"${PRINTABLE_ANDROID_SUPPORTED_ABIS}\" - " ) -endif() -unset( __androidAbiIdx ) - -# set target ABI options -if( ANDROID_ABI STREQUAL "x86" ) - set( X86 true ) - set( ANDROID_NDK_ABI_NAME "x86" ) - set( ANDROID_ARCH_NAME "x86" ) - set( ANDROID_LLVM_TRIPLE "i686-none-linux-android" ) - set( CMAKE_SYSTEM_PROCESSOR "i686" ) -elseif( ANDROID_ABI STREQUAL "x86_64" ) - set( X86 true ) - set( X86_64 true ) - set( ANDROID_NDK_ABI_NAME "x86_64" ) - set( ANDROID_ARCH_NAME "x86_64" ) - set( CMAKE_SYSTEM_PROCESSOR "x86_64" ) - set( ANDROID_LLVM_TRIPLE "x86_64-none-linux-android" ) -elseif( ANDROID_ABI STREQUAL "mips64" ) - set( MIPS64 true ) - set( ANDROID_NDK_ABI_NAME "mips64" ) - set( ANDROID_ARCH_NAME "mips64" ) - set( ANDROID_LLVM_TRIPLE "mips64el-none-linux-android" ) - set( CMAKE_SYSTEM_PROCESSOR "mips64" ) -elseif( ANDROID_ABI STREQUAL "mips" ) - set( MIPS true ) - set( ANDROID_NDK_ABI_NAME "mips" ) - set( ANDROID_ARCH_NAME "mips" ) - set( ANDROID_LLVM_TRIPLE "mipsel-none-linux-android" ) - set( CMAKE_SYSTEM_PROCESSOR "mips" ) -elseif( ANDROID_ABI STREQUAL "arm64-v8a" ) - set( ARM64_V8A true ) - set( ANDROID_NDK_ABI_NAME "arm64-v8a" ) - set( ANDROID_ARCH_NAME "arm64" ) - set( ANDROID_LLVM_TRIPLE "aarch64-none-linux-android" ) - set( CMAKE_SYSTEM_PROCESSOR "aarch64" ) - set( VFPV3 true ) - set( NEON true ) -elseif( ANDROID_ABI STREQUAL "armeabi" ) - set( ARMEABI true ) - set( ANDROID_NDK_ABI_NAME "armeabi" ) - set( ANDROID_ARCH_NAME "arm" ) - set( ANDROID_LLVM_TRIPLE "armv5te-none-linux-androideabi" ) - set( CMAKE_SYSTEM_PROCESSOR "armv5te" ) -elseif( ANDROID_ABI STREQUAL "armeabi-v6 with VFP" ) - set( ARMEABI_V6 true ) - set( ANDROID_NDK_ABI_NAME "armeabi" ) - set( ANDROID_ARCH_NAME "arm" ) - set( ANDROID_LLVM_TRIPLE "armv5te-none-linux-androideabi" ) - set( CMAKE_SYSTEM_PROCESSOR "armv6" ) - # need always fallback to older platform - set( ARMEABI true ) -elseif( ANDROID_ABI STREQUAL "armeabi-v7a") - set( ARMEABI_V7A true ) - set( ANDROID_NDK_ABI_NAME "armeabi-v7a" ) - set( ANDROID_ARCH_NAME "arm" ) - set( ANDROID_LLVM_TRIPLE "armv7-none-linux-androideabi" ) - set( CMAKE_SYSTEM_PROCESSOR "armv7-a" ) -elseif( ANDROID_ABI STREQUAL "armeabi-v7a with VFPV3" ) - set( ARMEABI_V7A true ) - set( ANDROID_NDK_ABI_NAME "armeabi-v7a" ) - set( ANDROID_ARCH_NAME "arm" ) - set( ANDROID_LLVM_TRIPLE "armv7-none-linux-androideabi" ) - set( CMAKE_SYSTEM_PROCESSOR "armv7-a" ) - set( VFPV3 true ) -elseif( ANDROID_ABI STREQUAL "armeabi-v7a with NEON" ) - set( ARMEABI_V7A true ) - set( ANDROID_NDK_ABI_NAME "armeabi-v7a" ) - set( ANDROID_ARCH_NAME "arm" ) - set( ANDROID_LLVM_TRIPLE "armv7-none-linux-androideabi" ) - set( CMAKE_SYSTEM_PROCESSOR "armv7-a" ) - set( VFPV3 true ) - set( NEON true ) -else() - message( SEND_ERROR "Unknown ANDROID_ABI=\"${ANDROID_ABI}\" is specified." ) -endif() - -if( CMAKE_BINARY_DIR AND EXISTS "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeSystem.cmake" ) - # really dirty hack - # it is not possible to change CMAKE_SYSTEM_PROCESSOR after the first run... - file( APPEND "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeSystem.cmake" "SET(CMAKE_SYSTEM_PROCESSOR \"${CMAKE_SYSTEM_PROCESSOR}\")\n" ) -endif() - -if( ANDROID_ARCH_NAME STREQUAL "arm" AND NOT ARMEABI_V6 ) - __INIT_VARIABLE( ANDROID_FORCE_ARM_BUILD VALUES OFF ) - set( ANDROID_FORCE_ARM_BUILD ${ANDROID_FORCE_ARM_BUILD} CACHE BOOL "Use 32-bit ARM instructions instead of Thumb-1" FORCE ) - mark_as_advanced( ANDROID_FORCE_ARM_BUILD ) -else() - unset( ANDROID_FORCE_ARM_BUILD CACHE ) -endif() - -# choose toolchain -if( ANDROID_TOOLCHAIN_NAME ) - list( FIND __availableToolchains "${ANDROID_TOOLCHAIN_NAME}" __toolchainIdx ) - if( __toolchainIdx EQUAL -1 ) - list( SORT __availableToolchains ) - string( REPLACE ";" "\n * " toolchains_list "${__availableToolchains}" ) - set( toolchains_list " * ${toolchains_list}") - message( FATAL_ERROR "Specified toolchain \"${ANDROID_TOOLCHAIN_NAME}\" is missing in your NDK or broken. Please verify that your NDK is working or select another compiler toolchain. -To configure the toolchain set CMake variable ANDROID_TOOLCHAIN_NAME to one of the following values:\n${toolchains_list}\n" ) - endif() - list( GET __availableToolchainArchs ${__toolchainIdx} __toolchainArch ) - if( NOT __toolchainArch STREQUAL ANDROID_ARCH_NAME ) - message( SEND_ERROR "Selected toolchain \"${ANDROID_TOOLCHAIN_NAME}\" is not able to compile binaries for the \"${ANDROID_ARCH_NAME}\" platform." ) - endif() -else() - set( __toolchainIdx -1 ) - set( __applicableToolchains "" ) - set( __toolchainMaxVersion "0.0.0" ) - list( LENGTH __availableToolchains __availableToolchainsCount ) - math( EXPR __availableToolchainsCount "${__availableToolchainsCount}-1" ) - foreach( __idx RANGE ${__availableToolchainsCount} ) - list( GET __availableToolchainArchs ${__idx} __toolchainArch ) - if( __toolchainArch STREQUAL ANDROID_ARCH_NAME ) - list( GET __availableToolchainCompilerVersions ${__idx} __toolchainVersion ) - string( REPLACE "x" "99" __toolchainVersion "${__toolchainVersion}") - if( __toolchainVersion VERSION_GREATER __toolchainMaxVersion ) - set( __toolchainMaxVersion "${__toolchainVersion}" ) - set( __toolchainIdx ${__idx} ) - endif() - endif() - endforeach() - unset( __availableToolchainsCount ) - unset( __toolchainMaxVersion ) - unset( __toolchainVersion ) -endif() -unset( __toolchainArch ) -if( __toolchainIdx EQUAL -1 ) - message( FATAL_ERROR "No one of available compiler toolchains is able to compile for ${ANDROID_ARCH_NAME} platform." ) -endif() -list( GET __availableToolchains ${__toolchainIdx} ANDROID_TOOLCHAIN_NAME ) -list( GET __availableToolchainMachines ${__toolchainIdx} ANDROID_TOOLCHAIN_MACHINE_NAME ) -list( GET __availableToolchainCompilerVersions ${__toolchainIdx} ANDROID_COMPILER_VERSION ) - -unset( __toolchainIdx ) -unset( __availableToolchains ) -unset( __availableToolchainMachines ) -unset( __availableToolchainArchs ) -unset( __availableToolchainCompilerVersions ) - -# choose native API level -__INIT_VARIABLE( ANDROID_NATIVE_API_LEVEL ENV_ANDROID_NATIVE_API_LEVEL ANDROID_API_LEVEL ENV_ANDROID_API_LEVEL ANDROID_STANDALONE_TOOLCHAIN_API_LEVEL ANDROID_DEFAULT_NDK_API_LEVEL_${ANDROID_ARCH_NAME} ANDROID_DEFAULT_NDK_API_LEVEL ) -string( REPLACE "android-" "" ANDROID_NATIVE_API_LEVEL "${ANDROID_NATIVE_API_LEVEL}" ) -string( STRIP "${ANDROID_NATIVE_API_LEVEL}" ANDROID_NATIVE_API_LEVEL ) -# adjust API level -set( __real_api_level ${ANDROID_DEFAULT_NDK_API_LEVEL_${ANDROID_ARCH_NAME}} ) -foreach( __level ${ANDROID_SUPPORTED_NATIVE_API_LEVELS} ) - if( (__level LESS ANDROID_NATIVE_API_LEVEL OR __level STREQUAL ANDROID_NATIVE_API_LEVEL) AND NOT __level LESS __real_api_level ) - set( __real_api_level ${__level} ) - endif() -endforeach() -if( __real_api_level AND NOT ANDROID_NATIVE_API_LEVEL STREQUAL __real_api_level ) - message( STATUS "Adjusting Android API level 'android-${ANDROID_NATIVE_API_LEVEL}' to 'android-${__real_api_level}'") - set( ANDROID_NATIVE_API_LEVEL ${__real_api_level} ) -endif() -unset(__real_api_level) -# validate -list( FIND ANDROID_SUPPORTED_NATIVE_API_LEVELS "${ANDROID_NATIVE_API_LEVEL}" __levelIdx ) -if( __levelIdx EQUAL -1 ) - message( SEND_ERROR "Specified Android native API level 'android-${ANDROID_NATIVE_API_LEVEL}' is not supported by your NDK/toolchain." ) -else() - if( BUILD_WITH_ANDROID_NDK ) - __DETECT_NATIVE_API_LEVEL( __realApiLevel "${ANDROID_NDK}/platforms/android-${ANDROID_NATIVE_API_LEVEL}/arch-${ANDROID_ARCH_NAME}/usr/include/android/api-level.h" ) - if( NOT __realApiLevel EQUAL ANDROID_NATIVE_API_LEVEL AND NOT __realApiLevel GREATER 9000 ) - message( SEND_ERROR "Specified Android API level (${ANDROID_NATIVE_API_LEVEL}) does not match to the level found (${__realApiLevel}). Probably your copy of NDK is broken." ) - endif() - unset( __realApiLevel ) - endif() - set( ANDROID_NATIVE_API_LEVEL "${ANDROID_NATIVE_API_LEVEL}" CACHE STRING "Android API level for native code" FORCE ) - set( CMAKE_ANDROID_API ${ANDROID_NATIVE_API_LEVEL} ) - if( CMAKE_VERSION VERSION_GREATER "2.8" ) - list( SORT ANDROID_SUPPORTED_NATIVE_API_LEVELS ) - set_property( CACHE ANDROID_NATIVE_API_LEVEL PROPERTY STRINGS ${ANDROID_SUPPORTED_NATIVE_API_LEVELS} ) - endif() -endif() -unset( __levelIdx ) - - -# remember target ABI -set( ANDROID_ABI "${ANDROID_ABI}" CACHE STRING "The target ABI for Android. If arm, then armeabi-v7a is recommended for hardware floating point." FORCE ) -if( CMAKE_VERSION VERSION_GREATER "2.8" ) - list( SORT ANDROID_SUPPORTED_ABIS_${ANDROID_ARCH_NAME} ) - set_property( CACHE ANDROID_ABI PROPERTY STRINGS ${ANDROID_SUPPORTED_ABIS_${ANDROID_ARCH_NAME}} ) -endif() - - -# runtime choice (STL, rtti, exceptions) -if( NOT ANDROID_STL ) - set( ANDROID_STL gnustl_static ) -endif() -set( ANDROID_STL "${ANDROID_STL}" CACHE STRING "C++ runtime" ) -set( ANDROID_STL_FORCE_FEATURES ON CACHE BOOL "automatically configure rtti and exceptions support based on C++ runtime" ) -mark_as_advanced( ANDROID_STL ANDROID_STL_FORCE_FEATURES ) - -if( BUILD_WITH_ANDROID_NDK ) - if( NOT "${ANDROID_STL}" MATCHES "^(none|system|system_re|gabi\\+\\+_static|gabi\\+\\+_shared|stlport_static|stlport_shared|gnustl_static|gnustl_shared)$") - message( FATAL_ERROR "ANDROID_STL is set to invalid value \"${ANDROID_STL}\". -The possible values are: - none -> Do not configure the runtime. - system -> Use the default minimal system C++ runtime library. - system_re -> Same as system but with rtti and exceptions. - gabi++_static -> Use the GAbi++ runtime as a static library. - gabi++_shared -> Use the GAbi++ runtime as a shared library. - stlport_static -> Use the STLport runtime as a static library. - stlport_shared -> Use the STLport runtime as a shared library. - gnustl_static -> (default) Use the GNU STL as a static library. - gnustl_shared -> Use the GNU STL as a shared library. -" ) - endif() -elseif( BUILD_WITH_STANDALONE_TOOLCHAIN ) - if( NOT "${ANDROID_STL}" MATCHES "^(none|gnustl_static|gnustl_shared)$") - message( FATAL_ERROR "ANDROID_STL is set to invalid value \"${ANDROID_STL}\". -The possible values are: - none -> Do not configure the runtime. - gnustl_static -> (default) Use the GNU STL as a static library. - gnustl_shared -> Use the GNU STL as a shared library. -" ) - endif() -endif() - -unset( ANDROID_RTTI ) -unset( ANDROID_EXCEPTIONS ) -unset( ANDROID_STL_INCLUDE_DIRS ) -unset( __libstl ) -unset( __libsupcxx ) - -if( NOT _CMAKE_IN_TRY_COMPILE AND ANDROID_NDK_RELEASE STREQUAL "r7b" AND ARMEABI_V7A AND NOT VFPV3 AND ANDROID_STL MATCHES "gnustl" ) - message( WARNING "The GNU STL armeabi-v7a binaries from NDK r7b can crash non-NEON devices. The files provided with NDK r7b were not configured properly, resulting in crashes on Tegra2-based devices and others when trying to use certain floating-point functions (e.g., cosf, sinf, expf). -You are strongly recommended to switch to another NDK release. -" ) -endif() - -if( NOT _CMAKE_IN_TRY_COMPILE AND X86 AND ANDROID_STL MATCHES "gnustl" AND ANDROID_NDK_RELEASE STREQUAL "r6" ) - message( WARNING "The x86 system header file from NDK r6 has incorrect definition for ptrdiff_t. You are recommended to upgrade to a newer NDK release or manually patch the header: -See https://android.googlesource.com/platform/development.git f907f4f9d4e56ccc8093df6fee54454b8bcab6c2 - diff --git a/ndk/platforms/android-9/arch-x86/include/machine/_types.h b/ndk/platforms/android-9/arch-x86/include/machine/_types.h - index 5e28c64..65892a1 100644 - --- a/ndk/platforms/android-9/arch-x86/include/machine/_types.h - +++ b/ndk/platforms/android-9/arch-x86/include/machine/_types.h - @@ -51,7 +51,11 @@ typedef long int ssize_t; - #endif - #ifndef _PTRDIFF_T - #define _PTRDIFF_T - -typedef long ptrdiff_t; - +# ifdef __ANDROID__ - + typedef int ptrdiff_t; - +# else - + typedef long ptrdiff_t; - +# endif - #endif -" ) -endif() - - -# setup paths and STL for standalone toolchain -if( BUILD_WITH_STANDALONE_TOOLCHAIN ) - set( ANDROID_TOOLCHAIN_ROOT "${ANDROID_STANDALONE_TOOLCHAIN}" ) - set( ANDROID_CLANG_TOOLCHAIN_ROOT "${ANDROID_STANDALONE_TOOLCHAIN}" ) - set( ANDROID_SYSROOT "${ANDROID_STANDALONE_TOOLCHAIN}/sysroot" ) - - if( NOT ANDROID_STL STREQUAL "none" ) - set( ANDROID_STL_INCLUDE_DIRS "${ANDROID_STANDALONE_TOOLCHAIN}/include/c++/${ANDROID_COMPILER_VERSION}" ) - if( NOT EXISTS "${ANDROID_STL_INCLUDE_DIRS}" ) - # old location ( pre r8c ) - set( ANDROID_STL_INCLUDE_DIRS "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/include/c++/${ANDROID_COMPILER_VERSION}" ) - endif() - if( ARMEABI_V7A AND EXISTS "${ANDROID_STL_INCLUDE_DIRS}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/${CMAKE_SYSTEM_PROCESSOR}/bits" ) - list( APPEND ANDROID_STL_INCLUDE_DIRS "${ANDROID_STL_INCLUDE_DIRS}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/${CMAKE_SYSTEM_PROCESSOR}" ) - elseif( ARMEABI AND NOT ANDROID_FORCE_ARM_BUILD AND EXISTS "${ANDROID_STL_INCLUDE_DIRS}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/thumb/bits" ) - list( APPEND ANDROID_STL_INCLUDE_DIRS "${ANDROID_STL_INCLUDE_DIRS}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/thumb" ) - else() - list( APPEND ANDROID_STL_INCLUDE_DIRS "${ANDROID_STL_INCLUDE_DIRS}/${ANDROID_TOOLCHAIN_MACHINE_NAME}" ) - endif() - # always search static GNU STL to get the location of libsupc++.a - if( ARMEABI_V7A AND NOT ANDROID_FORCE_ARM_BUILD AND EXISTS "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/${CMAKE_SYSTEM_PROCESSOR}/thumb/libstdc++.a" ) - set( __libstl "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/${CMAKE_SYSTEM_PROCESSOR}/thumb" ) - elseif( ARMEABI_V7A AND EXISTS "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/${CMAKE_SYSTEM_PROCESSOR}/libstdc++.a" ) - set( __libstl "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/${CMAKE_SYSTEM_PROCESSOR}" ) - elseif( ARMEABI AND NOT ANDROID_FORCE_ARM_BUILD AND EXISTS "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/thumb/libstdc++.a" ) - set( __libstl "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/thumb" ) - elseif( EXISTS "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/libstdc++.a" ) - set( __libstl "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib" ) - endif() - if( __libstl ) - set( __libsupcxx "${__libstl}/libsupc++.a" ) - set( __libstl "${__libstl}/libstdc++.a" ) - endif() - if( NOT EXISTS "${__libsupcxx}" ) - message( FATAL_ERROR "The required libstdsupc++.a is missing in your standalone toolchain. - Usually it happens because of bug in make-standalone-toolchain.sh script from NDK r7, r7b and r7c. - You need to either upgrade to newer NDK or manually copy - $ANDROID_NDK/sources/cxx-stl/gnu-libstdc++/libs/${ANDROID_NDK_ABI_NAME}/libsupc++.a - to - ${__libsupcxx} - " ) - endif() - if( ANDROID_STL STREQUAL "gnustl_shared" ) - if( ARMEABI_V7A AND EXISTS "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/${CMAKE_SYSTEM_PROCESSOR}/libgnustl_shared.so" ) - set( __libstl "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/${CMAKE_SYSTEM_PROCESSOR}/libgnustl_shared.so" ) - elseif( ARMEABI AND NOT ANDROID_FORCE_ARM_BUILD AND EXISTS "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/thumb/libgnustl_shared.so" ) - set( __libstl "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/thumb/libgnustl_shared.so" ) - elseif( EXISTS "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/libgnustl_shared.so" ) - set( __libstl "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/libgnustl_shared.so" ) - endif() - endif() - endif() -endif() - -# clang -if( "${ANDROID_TOOLCHAIN_NAME}" STREQUAL "standalone-clang" ) - set( ANDROID_COMPILER_IS_CLANG 1 ) - execute_process( COMMAND "${ANDROID_CLANG_TOOLCHAIN_ROOT}/bin/clang${TOOL_OS_SUFFIX}" --version OUTPUT_VARIABLE ANDROID_CLANG_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE ) - string( REGEX MATCH "[0-9]+[.][0-9]+" ANDROID_CLANG_VERSION "${ANDROID_CLANG_VERSION}") -elseif( "${ANDROID_TOOLCHAIN_NAME}" MATCHES "-clang3[.][0-9]?$" ) - string( REGEX MATCH "3[.][0-9]$" ANDROID_CLANG_VERSION "${ANDROID_TOOLCHAIN_NAME}") - string( REGEX REPLACE "-clang${ANDROID_CLANG_VERSION}$" "-${ANDROID_COMPILER_VERSION}" ANDROID_GCC_TOOLCHAIN_NAME "${ANDROID_TOOLCHAIN_NAME}" ) - if( NOT EXISTS "${ANDROID_NDK_TOOLCHAINS_PATH}/llvm-${ANDROID_CLANG_VERSION}${ANDROID_NDK_TOOLCHAINS_SUBPATH}/bin/clang${TOOL_OS_SUFFIX}" ) - message( FATAL_ERROR "Could not find the Clang compiler driver" ) - endif() - set( ANDROID_COMPILER_IS_CLANG 1 ) - set( ANDROID_CLANG_TOOLCHAIN_ROOT "${ANDROID_NDK_TOOLCHAINS_PATH}/llvm-${ANDROID_CLANG_VERSION}${ANDROID_NDK_TOOLCHAINS_SUBPATH}" ) -else() - set( ANDROID_GCC_TOOLCHAIN_NAME "${ANDROID_TOOLCHAIN_NAME}" ) - unset( ANDROID_COMPILER_IS_CLANG CACHE ) -endif() - -string( REPLACE "." "" _clang_name "clang${ANDROID_CLANG_VERSION}" ) -if( NOT EXISTS "${ANDROID_CLANG_TOOLCHAIN_ROOT}/bin/${_clang_name}${TOOL_OS_SUFFIX}" ) - set( _clang_name "clang" ) -endif() - - -# setup paths and STL for NDK -if( BUILD_WITH_ANDROID_NDK ) - set( ANDROID_TOOLCHAIN_ROOT "${ANDROID_NDK_TOOLCHAINS_PATH}/${ANDROID_GCC_TOOLCHAIN_NAME}${ANDROID_NDK_TOOLCHAINS_SUBPATH}" ) - set( ANDROID_SYSROOT "${ANDROID_NDK}/platforms/android-${ANDROID_NATIVE_API_LEVEL}/arch-${ANDROID_ARCH_NAME}" ) - - if( ANDROID_STL STREQUAL "none" ) - # do nothing - elseif( ANDROID_STL STREQUAL "system" ) - set( ANDROID_RTTI OFF ) - set( ANDROID_EXCEPTIONS OFF ) - set( ANDROID_STL_INCLUDE_DIRS "${ANDROID_NDK}/sources/cxx-stl/system/include" ) - elseif( ANDROID_STL STREQUAL "system_re" ) - set( ANDROID_RTTI ON ) - set( ANDROID_EXCEPTIONS ON ) - set( ANDROID_STL_INCLUDE_DIRS "${ANDROID_NDK}/sources/cxx-stl/system/include" ) - elseif( ANDROID_STL MATCHES "gabi" ) - if( ANDROID_NDK_RELEASE_NUM LESS 7000 ) # before r7 - message( FATAL_ERROR "gabi++ is not available in your NDK. You have to upgrade to NDK r7 or newer to use gabi++.") - endif() - set( ANDROID_RTTI ON ) - set( ANDROID_EXCEPTIONS OFF ) - set( ANDROID_STL_INCLUDE_DIRS "${ANDROID_NDK}/sources/cxx-stl/gabi++/include" ) - set( __libstl "${ANDROID_NDK}/sources/cxx-stl/gabi++/libs/${ANDROID_NDK_ABI_NAME}/libgabi++_static.a" ) - elseif( ANDROID_STL MATCHES "stlport" ) - if( NOT ANDROID_NDK_RELEASE_NUM LESS 8004 ) # before r8d - set( ANDROID_EXCEPTIONS ON ) - else() - set( ANDROID_EXCEPTIONS OFF ) - endif() - if( ANDROID_NDK_RELEASE_NUM LESS 7000 ) # before r7 - set( ANDROID_RTTI OFF ) - else() - set( ANDROID_RTTI ON ) - endif() - set( ANDROID_STL_INCLUDE_DIRS "${ANDROID_NDK}/sources/cxx-stl/stlport/stlport" ) - set( __libstl "${ANDROID_NDK}/sources/cxx-stl/stlport/libs/${ANDROID_NDK_ABI_NAME}/libstlport_static.a" ) - elseif( ANDROID_STL MATCHES "gnustl" ) - set( ANDROID_EXCEPTIONS ON ) - set( ANDROID_RTTI ON ) - if( EXISTS "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/${ANDROID_COMPILER_VERSION}" ) - if( ARMEABI_V7A AND ANDROID_COMPILER_VERSION VERSION_EQUAL "4.7" AND ANDROID_NDK_RELEASE STREQUAL "r8d" ) - # gnustl binary for 4.7 compiler is buggy :( - # TODO: look for right fix - set( __libstl "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/4.6" ) - else() - set( __libstl "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/${ANDROID_COMPILER_VERSION}" ) - endif() - else() - set( __libstl "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++" ) - endif() - set( ANDROID_STL_INCLUDE_DIRS "${__libstl}/include" "${__libstl}/libs/${ANDROID_NDK_ABI_NAME}/include" "${__libstl}/include/backward" ) - if( EXISTS "${__libstl}/libs/${ANDROID_NDK_ABI_NAME}/libgnustl_static.a" ) - set( __libstl "${__libstl}/libs/${ANDROID_NDK_ABI_NAME}/libgnustl_static.a" ) - else() - set( __libstl "${__libstl}/libs/${ANDROID_NDK_ABI_NAME}/libstdc++.a" ) - endif() - else() - message( FATAL_ERROR "Unknown runtime: ${ANDROID_STL}" ) - endif() - # find libsupc++.a - rtti & exceptions - if( ANDROID_STL STREQUAL "system_re" OR ANDROID_STL MATCHES "gnustl" ) - set( __libsupcxx "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/${ANDROID_COMPILER_VERSION}/libs/${ANDROID_NDK_ABI_NAME}/libsupc++.a" ) # r8b or newer - if( NOT EXISTS "${__libsupcxx}" ) - set( __libsupcxx "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/libs/${ANDROID_NDK_ABI_NAME}/libsupc++.a" ) # r7-r8 - endif() - if( NOT EXISTS "${__libsupcxx}" ) # before r7 - if( ARMEABI_V7A ) - if( ANDROID_FORCE_ARM_BUILD ) - set( __libsupcxx "${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/${CMAKE_SYSTEM_PROCESSOR}/libsupc++.a" ) - else() - set( __libsupcxx "${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/${CMAKE_SYSTEM_PROCESSOR}/thumb/libsupc++.a" ) - endif() - elseif( ARMEABI AND NOT ANDROID_FORCE_ARM_BUILD ) - set( __libsupcxx "${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/thumb/libsupc++.a" ) - else() - set( __libsupcxx "${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/libsupc++.a" ) - endif() - endif() - if( NOT EXISTS "${__libsupcxx}") - message( ERROR "Could not find libsupc++.a for a chosen platform. Either your NDK is not supported or is broken.") - endif() - endif() -endif() - - -# case of shared STL linkage -if( ANDROID_STL MATCHES "shared" AND DEFINED __libstl ) - string( REPLACE "_static.a" "_shared.so" __libstl "${__libstl}" ) - # TODO: check if .so file exists before the renaming -endif() - - -# ccache support -__INIT_VARIABLE( _ndk_ccache NDK_CCACHE ENV_NDK_CCACHE ) -if( _ndk_ccache ) - if( DEFINED NDK_CCACHE AND NOT EXISTS NDK_CCACHE ) - unset( NDK_CCACHE CACHE ) - endif() - find_program( NDK_CCACHE "${_ndk_ccache}" DOC "The path to ccache binary") -else() - unset( NDK_CCACHE CACHE ) -endif() -unset( _ndk_ccache ) - - -# setup the cross-compiler -if( NOT CMAKE_C_COMPILER ) - if( NDK_CCACHE AND NOT ANDROID_SYSROOT MATCHES "[ ;\"]" ) - set( CMAKE_C_COMPILER "${NDK_CCACHE}" CACHE PATH "ccache as C compiler" ) - set( CMAKE_CXX_COMPILER "${NDK_CCACHE}" CACHE PATH "ccache as C++ compiler" ) - if( ANDROID_COMPILER_IS_CLANG ) - set( CMAKE_C_COMPILER_ARG1 "${ANDROID_CLANG_TOOLCHAIN_ROOT}/bin/${_clang_name}${TOOL_OS_SUFFIX}" CACHE PATH "C compiler") - set( CMAKE_CXX_COMPILER_ARG1 "${ANDROID_CLANG_TOOLCHAIN_ROOT}/bin/${_clang_name}++${TOOL_OS_SUFFIX}" CACHE PATH "C++ compiler") - else() - set( CMAKE_C_COMPILER_ARG1 "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-gcc${TOOL_OS_SUFFIX}" CACHE PATH "C compiler") - set( CMAKE_CXX_COMPILER_ARG1 "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-g++${TOOL_OS_SUFFIX}" CACHE PATH "C++ compiler") - endif() - else() - if( ANDROID_COMPILER_IS_CLANG ) - set( CMAKE_C_COMPILER "${ANDROID_CLANG_TOOLCHAIN_ROOT}/bin/${_clang_name}${TOOL_OS_SUFFIX}" CACHE PATH "C compiler") - set( CMAKE_CXX_COMPILER "${ANDROID_CLANG_TOOLCHAIN_ROOT}/bin/${_clang_name}++${TOOL_OS_SUFFIX}" CACHE PATH "C++ compiler") - else() - set( CMAKE_C_COMPILER "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-gcc${TOOL_OS_SUFFIX}" CACHE PATH "C compiler" ) - set( CMAKE_CXX_COMPILER "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-g++${TOOL_OS_SUFFIX}" CACHE PATH "C++ compiler" ) - endif() - endif() - set( CMAKE_ASM_COMPILER "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-gcc${TOOL_OS_SUFFIX}" CACHE PATH "assembler" ) - set( CMAKE_STRIP "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-strip${TOOL_OS_SUFFIX}" CACHE PATH "strip" ) - if( EXISTS "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-gcc-ar${TOOL_OS_SUFFIX}" ) - # Use gcc-ar if we have it for better LTO support. - set( CMAKE_AR "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-gcc-ar${TOOL_OS_SUFFIX}" CACHE PATH "archive" ) - else() - set( CMAKE_AR "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-ar${TOOL_OS_SUFFIX}" CACHE PATH "archive" ) - endif() - set( CMAKE_LINKER "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-ld${TOOL_OS_SUFFIX}" CACHE PATH "linker" ) - set( CMAKE_NM "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-nm${TOOL_OS_SUFFIX}" CACHE PATH "nm" ) - set( CMAKE_OBJCOPY "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-objcopy${TOOL_OS_SUFFIX}" CACHE PATH "objcopy" ) - set( CMAKE_OBJDUMP "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-objdump${TOOL_OS_SUFFIX}" CACHE PATH "objdump" ) - set( CMAKE_RANLIB "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-ranlib${TOOL_OS_SUFFIX}" CACHE PATH "ranlib" ) -endif() - -set( _CMAKE_TOOLCHAIN_PREFIX "${ANDROID_TOOLCHAIN_MACHINE_NAME}-" ) -if( CMAKE_VERSION VERSION_LESS 2.8.5 ) - set( CMAKE_ASM_COMPILER_ARG1 "-c" ) -endif() -if( APPLE ) - find_program( CMAKE_INSTALL_NAME_TOOL NAMES install_name_tool ) - if( NOT CMAKE_INSTALL_NAME_TOOL ) - message( FATAL_ERROR "Could not find install_name_tool, please check your installation." ) - endif() - mark_as_advanced( CMAKE_INSTALL_NAME_TOOL ) -endif() - -# Force set compilers because standard identification works badly for us -include( CMakeForceCompiler ) -CMAKE_FORCE_C_COMPILER( "${CMAKE_C_COMPILER}" GNU ) -if( ANDROID_COMPILER_IS_CLANG ) - set( CMAKE_C_COMPILER_ID Clang ) -endif() -set( CMAKE_C_PLATFORM_ID Linux ) -if( X86_64 OR MIPS64 OR ARM64_V8A ) - set( CMAKE_C_SIZEOF_DATA_PTR 8 ) -else() - set( CMAKE_C_SIZEOF_DATA_PTR 4 ) -endif() -set( CMAKE_C_HAS_ISYSROOT 1 ) -set( CMAKE_C_COMPILER_ABI ELF ) -CMAKE_FORCE_CXX_COMPILER( "${CMAKE_CXX_COMPILER}" GNU ) -if( ANDROID_COMPILER_IS_CLANG ) - set( CMAKE_CXX_COMPILER_ID Clang) -endif() -set( CMAKE_CXX_PLATFORM_ID Linux ) -set( CMAKE_CXX_SIZEOF_DATA_PTR ${CMAKE_C_SIZEOF_DATA_PTR} ) -set( CMAKE_CXX_HAS_ISYSROOT 1 ) -set( CMAKE_CXX_COMPILER_ABI ELF ) -set( CMAKE_CXX_SOURCE_FILE_EXTENSIONS cc cp cxx cpp CPP c++ C ) -# force ASM compiler (required for CMake < 2.8.5) -set( CMAKE_ASM_COMPILER_ID_RUN TRUE ) -set( CMAKE_ASM_COMPILER_ID GNU ) -set( CMAKE_ASM_COMPILER_WORKS TRUE ) -set( CMAKE_ASM_COMPILER_FORCED TRUE ) -set( CMAKE_COMPILER_IS_GNUASM 1) -set( CMAKE_ASM_SOURCE_FILE_EXTENSIONS s S asm ) - -foreach( lang C CXX ASM ) - if( ANDROID_COMPILER_IS_CLANG ) - set( CMAKE_${lang}_COMPILER_VERSION ${ANDROID_CLANG_VERSION} ) - else() - set( CMAKE_${lang}_COMPILER_VERSION ${ANDROID_COMPILER_VERSION} ) - endif() -endforeach() - -# flags and definitions -remove_definitions( -DANDROID ) -add_definitions( -DANDROID ) - -if( ANDROID_SYSROOT MATCHES "[ ;\"]" ) - if( CMAKE_HOST_WIN32 ) - # try to convert path to 8.3 form - file( WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/cvt83.cmd" "@echo %~s1" ) - execute_process( COMMAND "$ENV{ComSpec}" /c "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/cvt83.cmd" "${ANDROID_SYSROOT}" - OUTPUT_VARIABLE __path OUTPUT_STRIP_TRAILING_WHITESPACE - RESULT_VARIABLE __result ERROR_QUIET ) - if( __result EQUAL 0 ) - file( TO_CMAKE_PATH "${__path}" ANDROID_SYSROOT ) - set( ANDROID_CXX_FLAGS "--sysroot=${ANDROID_SYSROOT}" ) - else() - set( ANDROID_CXX_FLAGS "--sysroot=\"${ANDROID_SYSROOT}\"" ) - endif() - else() - set( ANDROID_CXX_FLAGS "'--sysroot=${ANDROID_SYSROOT}'" ) - endif() - if( NOT _CMAKE_IN_TRY_COMPILE ) - # quotes can break try_compile and compiler identification - message(WARNING "Path to your Android NDK (or toolchain) has non-alphanumeric symbols.\nThe build might be broken.\n") - endif() -else() - set( ANDROID_CXX_FLAGS "--sysroot=${ANDROID_SYSROOT}" ) -endif() - -# NDK flags -if (ARM64_V8A ) - set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -funwind-tables" ) - set( ANDROID_CXX_FLAGS_RELEASE "-fomit-frame-pointer -fstrict-aliasing" ) - set( ANDROID_CXX_FLAGS_DEBUG "-fno-omit-frame-pointer -fno-strict-aliasing" ) - if( NOT ANDROID_COMPILER_IS_CLANG ) - set( ANDROID_CXX_FLAGS_RELEASE "${ANDROID_CXX_FLAGS_RELEASE} -funswitch-loops -finline-limit=300" ) - endif() -elseif( ARMEABI OR ARMEABI_V7A) - set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -funwind-tables" ) - if( NOT ANDROID_FORCE_ARM_BUILD AND NOT ARMEABI_V6 ) - set( ANDROID_CXX_FLAGS_RELEASE "-mthumb -fomit-frame-pointer -fno-strict-aliasing" ) - set( ANDROID_CXX_FLAGS_DEBUG "-marm -fno-omit-frame-pointer -fno-strict-aliasing" ) - if( NOT ANDROID_COMPILER_IS_CLANG ) - set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -finline-limit=64" ) - endif() - else() - # always compile ARMEABI_V6 in arm mode; otherwise there is no difference from ARMEABI - set( ANDROID_CXX_FLAGS_RELEASE "-marm -fomit-frame-pointer -fstrict-aliasing" ) - set( ANDROID_CXX_FLAGS_DEBUG "-marm -fno-omit-frame-pointer -fno-strict-aliasing" ) - if( NOT ANDROID_COMPILER_IS_CLANG ) - set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -funswitch-loops -finline-limit=300" ) - endif() - endif() -elseif( X86 OR X86_64 ) - set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -funwind-tables" ) - if( NOT ANDROID_COMPILER_IS_CLANG ) - set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -funswitch-loops -finline-limit=300" ) - endif() - set( ANDROID_CXX_FLAGS_RELEASE "-fomit-frame-pointer -fstrict-aliasing" ) - set( ANDROID_CXX_FLAGS_DEBUG "-fno-omit-frame-pointer -fno-strict-aliasing" ) -elseif( MIPS OR MIPS64 ) - set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -fno-strict-aliasing -finline-functions -funwind-tables -fmessage-length=0" ) - set( ANDROID_CXX_FLAGS_RELEASE "-fomit-frame-pointer" ) - set( ANDROID_CXX_FLAGS_DEBUG "-fno-omit-frame-pointer" ) - if( NOT ANDROID_COMPILER_IS_CLANG ) - set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -fno-inline-functions-called-once -fgcse-after-reload -frerun-cse-after-loop -frename-registers" ) - set( ANDROID_CXX_FLAGS_RELEASE "${ANDROID_CXX_FLAGS_RELEASE} -funswitch-loops -finline-limit=300" ) - endif() -elseif() - set( ANDROID_CXX_FLAGS_RELEASE "" ) - set( ANDROID_CXX_FLAGS_DEBUG "" ) -endif() - -set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -fsigned-char" ) # good/necessary when porting desktop libraries - -if( NOT X86 AND NOT ANDROID_COMPILER_IS_CLANG ) - set( ANDROID_CXX_FLAGS "-Wno-psabi ${ANDROID_CXX_FLAGS}" ) -endif() - -if( NOT ANDROID_COMPILER_VERSION VERSION_LESS "4.6" ) - set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -no-canonical-prefixes" ) # see https://android-review.googlesource.com/#/c/47564/ -endif() - -# ABI-specific flags -if( ARMEABI_V7A ) - set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -march=armv7-a -mfloat-abi=softfp" ) - if( NEON ) - set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -mfpu=neon" ) - elseif( VFPV3 ) - set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -mfpu=vfpv3" ) - else() - set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -mfpu=vfpv3-d16" ) - endif() -elseif( ARMEABI_V6 ) - set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -march=armv6 -mfloat-abi=softfp -mfpu=vfp" ) # vfp == vfpv2 -elseif( ARMEABI ) - set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -march=armv5te -mtune=xscale -msoft-float" ) -endif() - -if( ANDROID_STL MATCHES "gnustl" AND (EXISTS "${__libstl}" OR EXISTS "${__libsupcxx}") ) - set( CMAKE_CXX_CREATE_SHARED_LIBRARY " -o " ) - set( CMAKE_CXX_CREATE_SHARED_MODULE " -o " ) - set( CMAKE_CXX_LINK_EXECUTABLE " -o " ) -else() - set( CMAKE_CXX_CREATE_SHARED_LIBRARY " -o " ) - set( CMAKE_CXX_CREATE_SHARED_MODULE " -o " ) - set( CMAKE_CXX_LINK_EXECUTABLE " -o " ) -endif() - -# STL -if( EXISTS "${__libstl}" OR EXISTS "${__libsupcxx}" ) - if( EXISTS "${__libstl}" ) - set( CMAKE_CXX_CREATE_SHARED_LIBRARY "${CMAKE_CXX_CREATE_SHARED_LIBRARY} \"${__libstl}\"" ) - set( CMAKE_CXX_CREATE_SHARED_MODULE "${CMAKE_CXX_CREATE_SHARED_MODULE} \"${__libstl}\"" ) - set( CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} \"${__libstl}\"" ) - endif() - if( EXISTS "${__libsupcxx}" ) - set( CMAKE_CXX_CREATE_SHARED_LIBRARY "${CMAKE_CXX_CREATE_SHARED_LIBRARY} \"${__libsupcxx}\"" ) - set( CMAKE_CXX_CREATE_SHARED_MODULE "${CMAKE_CXX_CREATE_SHARED_MODULE} \"${__libsupcxx}\"" ) - set( CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} \"${__libsupcxx}\"" ) - # C objects: - set( CMAKE_C_CREATE_SHARED_LIBRARY " -o " ) - set( CMAKE_C_CREATE_SHARED_MODULE " -o " ) - set( CMAKE_C_LINK_EXECUTABLE " -o " ) - set( CMAKE_C_CREATE_SHARED_LIBRARY "${CMAKE_C_CREATE_SHARED_LIBRARY} \"${__libsupcxx}\"" ) - set( CMAKE_C_CREATE_SHARED_MODULE "${CMAKE_C_CREATE_SHARED_MODULE} \"${__libsupcxx}\"" ) - set( CMAKE_C_LINK_EXECUTABLE "${CMAKE_C_LINK_EXECUTABLE} \"${__libsupcxx}\"" ) - endif() - if( ANDROID_STL MATCHES "gnustl" ) - if( NOT EXISTS "${ANDROID_LIBM_PATH}" ) - set( ANDROID_LIBM_PATH -lm ) - endif() - set( CMAKE_CXX_CREATE_SHARED_LIBRARY "${CMAKE_CXX_CREATE_SHARED_LIBRARY} ${ANDROID_LIBM_PATH}" ) - set( CMAKE_CXX_CREATE_SHARED_MODULE "${CMAKE_CXX_CREATE_SHARED_MODULE} ${ANDROID_LIBM_PATH}" ) - set( CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} ${ANDROID_LIBM_PATH}" ) - endif() -endif() - -# variables controlling optional build flags -if( ANDROID_NDK_RELEASE_NUM LESS 7000 ) # before r7 - # libGLESv2.so in NDK's prior to r7 refers to missing external symbols. - # So this flag option is required for all projects using OpenGL from native. - __INIT_VARIABLE( ANDROID_SO_UNDEFINED VALUES ON ) -else() - __INIT_VARIABLE( ANDROID_SO_UNDEFINED VALUES OFF ) -endif() -__INIT_VARIABLE( ANDROID_NO_UNDEFINED VALUES ON ) -__INIT_VARIABLE( ANDROID_FUNCTION_LEVEL_LINKING VALUES ON ) -__INIT_VARIABLE( ANDROID_GOLD_LINKER VALUES ON ) -__INIT_VARIABLE( ANDROID_NOEXECSTACK VALUES ON ) -__INIT_VARIABLE( ANDROID_RELRO VALUES ON ) - -set( ANDROID_NO_UNDEFINED ${ANDROID_NO_UNDEFINED} CACHE BOOL "Show all undefined symbols as linker errors" ) -set( ANDROID_SO_UNDEFINED ${ANDROID_SO_UNDEFINED} CACHE BOOL "Allows or disallows undefined symbols in shared libraries" ) -set( ANDROID_FUNCTION_LEVEL_LINKING ${ANDROID_FUNCTION_LEVEL_LINKING} CACHE BOOL "Put each function in separate section and enable garbage collection of unused input sections at link time" ) -set( ANDROID_GOLD_LINKER ${ANDROID_GOLD_LINKER} CACHE BOOL "Enables gold linker" ) -set( ANDROID_NOEXECSTACK ${ANDROID_NOEXECSTACK} CACHE BOOL "Allows or disallows undefined symbols in shared libraries" ) -set( ANDROID_RELRO ${ANDROID_RELRO} CACHE BOOL "Enables RELRO - a memory corruption mitigation technique" ) -mark_as_advanced( ANDROID_NO_UNDEFINED ANDROID_SO_UNDEFINED ANDROID_FUNCTION_LEVEL_LINKING ANDROID_GOLD_LINKER ANDROID_NOEXECSTACK ANDROID_RELRO ) - -# linker flags -set( ANDROID_LINKER_FLAGS "" ) - -if( ARMEABI_V7A ) - # this is *required* to use the following linker flags that routes around - # a CPU bug in some Cortex-A8 implementations: - set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -Wl,--fix-cortex-a8" ) -endif() - -if( ANDROID_NO_UNDEFINED ) - if( MIPS ) - # there is some sysroot-related problem in mips linker... - if( NOT ANDROID_SYSROOT MATCHES "[ ;\"]" ) - set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -Wl,--no-undefined -Wl,-rpath-link,${ANDROID_SYSROOT}/usr/lib" ) - endif() - else() - set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -Wl,--no-undefined" ) - endif() -endif() - -if( ANDROID_SO_UNDEFINED ) - set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -Wl,-allow-shlib-undefined" ) -endif() - -if( ANDROID_FUNCTION_LEVEL_LINKING ) - set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -fdata-sections -ffunction-sections" ) - set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -Wl,--gc-sections" ) -endif() - -if( ANDROID_COMPILER_VERSION VERSION_EQUAL "4.6" ) - if( ANDROID_GOLD_LINKER AND (CMAKE_HOST_UNIX OR ANDROID_NDK_RELEASE_NUM GREATER 8002) AND (ARMEABI OR ARMEABI_V7A OR X86) ) - set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -fuse-ld=gold" ) - elseif( ANDROID_NDK_RELEASE_NUM GREATER 8002 ) # after r8b - set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -fuse-ld=bfd" ) - elseif( ANDROID_NDK_RELEASE STREQUAL "r8b" AND ARMEABI AND NOT _CMAKE_IN_TRY_COMPILE ) - message( WARNING "The default bfd linker from arm GCC 4.6 toolchain can fail with 'unresolvable R_ARM_THM_CALL relocation' error message. See https://code.google.com/p/android/issues/detail?id=35342 - On Linux and OS X host platform you can workaround this problem using gold linker (default). - Rerun cmake with -DANDROID_GOLD_LINKER=ON option in case of problems. -" ) - endif() -endif() # version 4.6 - -if( ANDROID_NOEXECSTACK ) - if( ANDROID_COMPILER_IS_CLANG ) - set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -Xclang -mnoexecstack" ) - else() - set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -Wa,--noexecstack" ) - endif() - set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -Wl,-z,noexecstack" ) -endif() - -if( ANDROID_RELRO ) - set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -Wl,-z,relro -Wl,-z,now" ) -endif() - -if( ANDROID_COMPILER_IS_CLANG ) - set( ANDROID_CXX_FLAGS "-target ${ANDROID_LLVM_TRIPLE} -Qunused-arguments ${ANDROID_CXX_FLAGS}" ) - if( BUILD_WITH_ANDROID_NDK ) - set( ANDROID_CXX_FLAGS "-gcc-toolchain ${ANDROID_TOOLCHAIN_ROOT} ${ANDROID_CXX_FLAGS}" ) - endif() -endif() - -# cache flags -set( CMAKE_CXX_FLAGS "" CACHE STRING "c++ flags" ) -set( CMAKE_C_FLAGS "" CACHE STRING "c flags" ) -set( CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "c++ Release flags" ) -set( CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "c Release flags" ) -set( CMAKE_CXX_FLAGS_DEBUG "-O0 -g -DDEBUG -D_DEBUG" CACHE STRING "c++ Debug flags" ) -set( CMAKE_C_FLAGS_DEBUG "-O0 -g -DDEBUG -D_DEBUG" CACHE STRING "c Debug flags" ) -set( CMAKE_SHARED_LINKER_FLAGS "" CACHE STRING "shared linker flags" ) -set( CMAKE_MODULE_LINKER_FLAGS "" CACHE STRING "module linker flags" ) -set( CMAKE_EXE_LINKER_FLAGS "-Wl,-z,nocopyreloc" CACHE STRING "executable linker flags" ) - -# put flags to cache (for debug purpose only) -set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS}" CACHE INTERNAL "Android specific c/c++ flags" ) -set( ANDROID_CXX_FLAGS_RELEASE "${ANDROID_CXX_FLAGS_RELEASE}" CACHE INTERNAL "Android specific c/c++ Release flags" ) -set( ANDROID_CXX_FLAGS_DEBUG "${ANDROID_CXX_FLAGS_DEBUG}" CACHE INTERNAL "Android specific c/c++ Debug flags" ) -set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS}" CACHE INTERNAL "Android specific c/c++ linker flags" ) - -# finish flags -set( CMAKE_CXX_FLAGS "${ANDROID_CXX_FLAGS} ${CMAKE_CXX_FLAGS}" ) -set( CMAKE_C_FLAGS "${ANDROID_CXX_FLAGS} ${CMAKE_C_FLAGS}" ) -set( CMAKE_CXX_FLAGS_RELEASE "${ANDROID_CXX_FLAGS_RELEASE} ${CMAKE_CXX_FLAGS_RELEASE}" ) -set( CMAKE_C_FLAGS_RELEASE "${ANDROID_CXX_FLAGS_RELEASE} ${CMAKE_C_FLAGS_RELEASE}" ) -set( CMAKE_CXX_FLAGS_DEBUG "${ANDROID_CXX_FLAGS_DEBUG} ${CMAKE_CXX_FLAGS_DEBUG}" ) -set( CMAKE_C_FLAGS_DEBUG "${ANDROID_CXX_FLAGS_DEBUG} ${CMAKE_C_FLAGS_DEBUG}" ) -set( CMAKE_SHARED_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS}" ) -set( CMAKE_MODULE_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} ${CMAKE_MODULE_LINKER_FLAGS}" ) -set( CMAKE_EXE_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}" ) - -if( MIPS AND BUILD_WITH_ANDROID_NDK AND ANDROID_NDK_RELEASE STREQUAL "r8" ) - set( CMAKE_SHARED_LINKER_FLAGS "-Wl,-T,${ANDROID_NDK_TOOLCHAINS_PATH}/${ANDROID_GCC_TOOLCHAIN_NAME}/mipself.xsc ${CMAKE_SHARED_LINKER_FLAGS}" ) - set( CMAKE_MODULE_LINKER_FLAGS "-Wl,-T,${ANDROID_NDK_TOOLCHAINS_PATH}/${ANDROID_GCC_TOOLCHAIN_NAME}/mipself.xsc ${CMAKE_MODULE_LINKER_FLAGS}" ) - set( CMAKE_EXE_LINKER_FLAGS "-Wl,-T,${ANDROID_NDK_TOOLCHAINS_PATH}/${ANDROID_GCC_TOOLCHAIN_NAME}/mipself.x ${CMAKE_EXE_LINKER_FLAGS}" ) -endif() - -# pie/pic -if( NOT (ANDROID_NATIVE_API_LEVEL LESS 16) AND (NOT DEFINED ANDROID_APP_PIE OR ANDROID_APP_PIE) AND (CMAKE_VERSION VERSION_GREATER 2.8.8) ) - set( CMAKE_POSITION_INDEPENDENT_CODE TRUE ) - set( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fPIE -pie") -else() - set( CMAKE_POSITION_INDEPENDENT_CODE FALSE ) - set( CMAKE_CXX_FLAGS "-fpic ${CMAKE_CXX_FLAGS}" ) - set( CMAKE_C_FLAGS "-fpic ${CMAKE_C_FLAGS}" ) -endif() - -# configure rtti -if( DEFINED ANDROID_RTTI AND ANDROID_STL_FORCE_FEATURES ) - if( ANDROID_RTTI ) - set( CMAKE_CXX_FLAGS "-frtti ${CMAKE_CXX_FLAGS}" ) - else() - set( CMAKE_CXX_FLAGS "-fno-rtti ${CMAKE_CXX_FLAGS}" ) - endif() -endif() - -# configure exceptios -if( DEFINED ANDROID_EXCEPTIONS AND ANDROID_STL_FORCE_FEATURES ) - if( ANDROID_EXCEPTIONS ) - set( CMAKE_CXX_FLAGS "-fexceptions ${CMAKE_CXX_FLAGS}" ) - set( CMAKE_C_FLAGS "-fexceptions ${CMAKE_C_FLAGS}" ) - else() - set( CMAKE_CXX_FLAGS "-fno-exceptions ${CMAKE_CXX_FLAGS}" ) - set( CMAKE_C_FLAGS "-fno-exceptions ${CMAKE_C_FLAGS}" ) - endif() -endif() - -# global includes and link directories -include_directories( SYSTEM "${ANDROID_SYSROOT}/usr/include" ${ANDROID_STL_INCLUDE_DIRS} ) -get_filename_component(__android_install_path "${CMAKE_INSTALL_PREFIX}/libs/${ANDROID_NDK_ABI_NAME}" ABSOLUTE) # avoid CMP0015 policy warning -link_directories( "${__android_install_path}" ) - -# detect if need link crtbegin_so.o explicitly -if( NOT DEFINED ANDROID_EXPLICIT_CRT_LINK ) - set( __cmd "${CMAKE_CXX_CREATE_SHARED_LIBRARY}" ) - string( REPLACE "" "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1}" __cmd "${__cmd}" ) - string( REPLACE "" "${CMAKE_C_COMPILER} ${CMAKE_C_COMPILER_ARG1}" __cmd "${__cmd}" ) - string( REPLACE "" "${CMAKE_CXX_FLAGS}" __cmd "${__cmd}" ) - string( REPLACE "" "" __cmd "${__cmd}" ) - string( REPLACE "" "${CMAKE_SHARED_LINKER_FLAGS}" __cmd "${__cmd}" ) - string( REPLACE "" "-shared" __cmd "${__cmd}" ) - string( REPLACE "" "" __cmd "${__cmd}" ) - string( REPLACE "" "" __cmd "${__cmd}" ) - string( REPLACE "" "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/toolchain_crtlink_test.so" __cmd "${__cmd}" ) - string( REPLACE "" "\"${ANDROID_SYSROOT}/usr/lib/crtbegin_so.o\"" __cmd "${__cmd}" ) - string( REPLACE "" "" __cmd "${__cmd}" ) - separate_arguments( __cmd ) - foreach( __var ANDROID_NDK ANDROID_NDK_TOOLCHAINS_PATH ANDROID_STANDALONE_TOOLCHAIN ) - if( ${__var} ) - set( __tmp "${${__var}}" ) - separate_arguments( __tmp ) - string( REPLACE "${__tmp}" "${${__var}}" __cmd "${__cmd}") - endif() - endforeach() - string( REPLACE "'" "" __cmd "${__cmd}" ) - string( REPLACE "\"" "" __cmd "${__cmd}" ) - execute_process( COMMAND ${__cmd} RESULT_VARIABLE __cmd_result OUTPUT_QUIET ERROR_QUIET ) - if( __cmd_result EQUAL 0 ) - set( ANDROID_EXPLICIT_CRT_LINK ON ) - else() - set( ANDROID_EXPLICIT_CRT_LINK OFF ) - endif() -endif() - -if( ANDROID_EXPLICIT_CRT_LINK ) - set( CMAKE_CXX_CREATE_SHARED_LIBRARY "${CMAKE_CXX_CREATE_SHARED_LIBRARY} \"${ANDROID_SYSROOT}/usr/lib/crtbegin_so.o\"" ) - set( CMAKE_CXX_CREATE_SHARED_MODULE "${CMAKE_CXX_CREATE_SHARED_MODULE} \"${ANDROID_SYSROOT}/usr/lib/crtbegin_so.o\"" ) -endif() - -# setup output directories -set( CMAKE_INSTALL_PREFIX "${ANDROID_TOOLCHAIN_ROOT}/user" CACHE STRING "path for installing" ) - -if( DEFINED LIBRARY_OUTPUT_PATH_ROOT - OR EXISTS "${CMAKE_SOURCE_DIR}/AndroidManifest.xml" - OR (EXISTS "${CMAKE_SOURCE_DIR}/../AndroidManifest.xml" AND EXISTS "${CMAKE_SOURCE_DIR}/../jni/") ) - set( LIBRARY_OUTPUT_PATH_ROOT ${CMAKE_SOURCE_DIR} CACHE PATH "Root for binaries output, set this to change where Android libs are installed to" ) - if( NOT _CMAKE_IN_TRY_COMPILE ) - if( EXISTS "${CMAKE_SOURCE_DIR}/jni/CMakeLists.txt" ) - set( EXECUTABLE_OUTPUT_PATH "${LIBRARY_OUTPUT_PATH_ROOT}/bin/${ANDROID_NDK_ABI_NAME}" CACHE PATH "Output directory for applications" ) - else() - set( EXECUTABLE_OUTPUT_PATH "${LIBRARY_OUTPUT_PATH_ROOT}/bin" CACHE PATH "Output directory for applications" ) - endif() - set( LIBRARY_OUTPUT_PATH "${LIBRARY_OUTPUT_PATH_ROOT}/libs/${ANDROID_NDK_ABI_NAME}" CACHE PATH "Output directory for Android libs" ) - endif() -endif() - -# copy shaed stl library to build directory -if( NOT _CMAKE_IN_TRY_COMPILE AND __libstl MATCHES "[.]so$" AND DEFINED LIBRARY_OUTPUT_PATH ) - get_filename_component( __libstlname "${__libstl}" NAME ) - execute_process( COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${__libstl}" "${LIBRARY_OUTPUT_PATH}/${__libstlname}" RESULT_VARIABLE __fileCopyProcess ) - if( NOT __fileCopyProcess EQUAL 0 OR NOT EXISTS "${LIBRARY_OUTPUT_PATH}/${__libstlname}") - message( SEND_ERROR "Failed copying of ${__libstl} to the ${LIBRARY_OUTPUT_PATH}/${__libstlname}" ) - endif() - unset( __fileCopyProcess ) - unset( __libstlname ) -endif() - - -# set these global flags for cmake client scripts to change behavior -set( ANDROID True ) -set( BUILD_ANDROID True ) - -# where is the target environment -set( CMAKE_FIND_ROOT_PATH "${ANDROID_TOOLCHAIN_ROOT}/bin" "${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_MACHINE_NAME}" "${ANDROID_SYSROOT}" "${CMAKE_INSTALL_PREFIX}" "${CMAKE_INSTALL_PREFIX}/share" ) - -# only search for libraries and includes in the ndk toolchain -set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY ) -set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) -set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) - - -# macro to find packages on the host OS -macro( find_host_package ) - set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER ) - set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER ) - set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER ) - if( CMAKE_HOST_WIN32 ) - SET( WIN32 1 ) - SET( UNIX ) - elseif( CMAKE_HOST_APPLE ) - SET( APPLE 1 ) - SET( UNIX ) - endif() - find_package( ${ARGN} ) - SET( WIN32 ) - SET( APPLE ) - SET( UNIX 1 ) - set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY ) - set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) - set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) -endmacro() - - -# macro to find programs on the host OS -macro( find_host_program ) - set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER ) - set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER ) - set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER ) - if( CMAKE_HOST_WIN32 ) - SET( WIN32 1 ) - SET( UNIX ) - elseif( CMAKE_HOST_APPLE ) - SET( APPLE 1 ) - SET( UNIX ) - endif() - find_program( ${ARGN} ) - SET( WIN32 ) - SET( APPLE ) - SET( UNIX 1 ) - set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY ) - set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) - set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) -endmacro() - - -# export toolchain settings for the try_compile() command -if( NOT _CMAKE_IN_TRY_COMPILE ) - set( __toolchain_config "") - foreach( __var NDK_CCACHE LIBRARY_OUTPUT_PATH_ROOT ANDROID_FORBID_SYGWIN - ANDROID_NDK_HOST_X64 - ANDROID_NDK - ANDROID_NDK_LAYOUT - ANDROID_STANDALONE_TOOLCHAIN - ANDROID_TOOLCHAIN_NAME - ANDROID_ABI - ANDROID_NATIVE_API_LEVEL - ANDROID_STL - ANDROID_STL_FORCE_FEATURES - ANDROID_FORCE_ARM_BUILD - ANDROID_NO_UNDEFINED - ANDROID_SO_UNDEFINED - ANDROID_FUNCTION_LEVEL_LINKING - ANDROID_GOLD_LINKER - ANDROID_NOEXECSTACK - ANDROID_RELRO - ANDROID_LIBM_PATH - ANDROID_EXPLICIT_CRT_LINK - ANDROID_APP_PIE - ) - if( DEFINED ${__var} ) - if( ${__var} MATCHES " ") - set( __toolchain_config "${__toolchain_config}set( ${__var} \"${${__var}}\" CACHE INTERNAL \"\" )\n" ) - else() - set( __toolchain_config "${__toolchain_config}set( ${__var} ${${__var}} CACHE INTERNAL \"\" )\n" ) - endif() - endif() - endforeach() - file( WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/android.toolchain.config.cmake" "${__toolchain_config}" ) - unset( __toolchain_config ) -endif() - - -# force cmake to produce / instead of \ in build commands for Ninja generator -if( CMAKE_GENERATOR MATCHES "Ninja" AND CMAKE_HOST_WIN32 ) - # it is a bad hack after all - # CMake generates Ninja makefiles with UNIX paths only if it thinks that we are going to build with MinGW - set( CMAKE_COMPILER_IS_MINGW TRUE ) # tell CMake that we are MinGW - set( CMAKE_CROSSCOMPILING TRUE ) # stop recursion - enable_language( C ) - enable_language( CXX ) - # unset( CMAKE_COMPILER_IS_MINGW ) # can't unset because CMake does not convert back-slashes in response files without it - unset( MINGW ) -endif() - - -# Variables controlling behavior or set by cmake toolchain: -# ANDROID_ABI : "armeabi-v7a" (default), "armeabi", "armeabi-v7a with NEON", "armeabi-v7a with VFPV3", "armeabi-v6 with VFP", "x86", "mips", "arm64-v8a", "x86_64", "mips64" -# ANDROID_NATIVE_API_LEVEL : 3,4,5,8,9,14,15,16,17,18,19,21 (depends on NDK version) -# ANDROID_STL : gnustl_static/gnustl_shared/stlport_static/stlport_shared/gabi++_static/gabi++_shared/system_re/system/none -# ANDROID_FORBID_SYGWIN : ON/OFF -# ANDROID_NO_UNDEFINED : ON/OFF -# ANDROID_SO_UNDEFINED : OFF/ON (default depends on NDK version) -# ANDROID_FUNCTION_LEVEL_LINKING : ON/OFF -# ANDROID_GOLD_LINKER : ON/OFF -# ANDROID_NOEXECSTACK : ON/OFF -# ANDROID_RELRO : ON/OFF -# ANDROID_FORCE_ARM_BUILD : ON/OFF -# ANDROID_STL_FORCE_FEATURES : ON/OFF -# ANDROID_LIBM_PATH : path to libm.so (set to something like $(TOP)/out/target/product//obj/lib/libm.so) to workaround unresolved `sincos` -# Can be set only at the first run: -# ANDROID_NDK : path to your NDK install -# NDK_CCACHE : path to your ccache executable -# ANDROID_TOOLCHAIN_NAME : the NDK name of compiler toolchain -# ANDROID_NDK_HOST_X64 : try to use x86_64 toolchain (default for x64 host systems) -# ANDROID_NDK_LAYOUT : the inner NDK structure (RELEASE, LINARO, ANDROID) -# LIBRARY_OUTPUT_PATH_ROOT : -# ANDROID_STANDALONE_TOOLCHAIN -# -# Primary read-only variables: -# ANDROID : always TRUE -# ARMEABI : TRUE for arm v6 and older devices -# ARMEABI_V6 : TRUE for arm v6 -# ARMEABI_V7A : TRUE for arm v7a -# ARM64_V8A : TRUE for arm64-v8a -# NEON : TRUE if NEON unit is enabled -# VFPV3 : TRUE if VFP version 3 is enabled -# X86 : TRUE if configured for x86 -# X86_64 : TRUE if configured for x86_64 -# MIPS : TRUE if configured for mips -# MIPS64 : TRUE if configured for mips64 -# BUILD_WITH_ANDROID_NDK : TRUE if NDK is used -# BUILD_WITH_STANDALONE_TOOLCHAIN : TRUE if standalone toolchain is used -# ANDROID_NDK_HOST_SYSTEM_NAME : "windows", "linux-x86" or "darwin-x86" depending on host platform -# ANDROID_NDK_ABI_NAME : "armeabi", "armeabi-v7a", "x86", "mips", "arm64-v8a", "x86_64", "mips64" depending on ANDROID_ABI -# ANDROID_NDK_RELEASE : from r5 to r10d; set only for NDK -# ANDROID_NDK_RELEASE_NUM : numeric ANDROID_NDK_RELEASE version (1000*major+minor) -# ANDROID_ARCH_NAME : "arm", "x86", "mips", "arm64", "x86_64", "mips64" depending on ANDROID_ABI -# ANDROID_SYSROOT : path to the compiler sysroot -# TOOL_OS_SUFFIX : "" or ".exe" depending on host platform -# ANDROID_COMPILER_IS_CLANG : TRUE if clang compiler is used -# -# Secondary (less stable) read-only variables: -# ANDROID_COMPILER_VERSION : GCC version used (not Clang version) -# ANDROID_CLANG_VERSION : version of clang compiler if clang is used -# ANDROID_CXX_FLAGS : C/C++ compiler flags required by Android platform -# ANDROID_SUPPORTED_ABIS : list of currently allowed values for ANDROID_ABI -# ANDROID_TOOLCHAIN_MACHINE_NAME : "arm-linux-androideabi", "arm-eabi" or "i686-android-linux" -# ANDROID_TOOLCHAIN_ROOT : path to the top level of toolchain (standalone or placed inside NDK) -# ANDROID_CLANG_TOOLCHAIN_ROOT : path to clang tools -# ANDROID_SUPPORTED_NATIVE_API_LEVELS : list of native API levels found inside NDK -# ANDROID_STL_INCLUDE_DIRS : stl include paths -# ANDROID_RTTI : if rtti is enabled by the runtime -# ANDROID_EXCEPTIONS : if exceptions are enabled by the runtime -# ANDROID_GCC_TOOLCHAIN_NAME : read-only, differs from ANDROID_TOOLCHAIN_NAME only if clang is used -# -# Defaults: -# ANDROID_DEFAULT_NDK_API_LEVEL -# ANDROID_DEFAULT_NDK_API_LEVEL_${ARCH} -# ANDROID_NDK_SEARCH_PATHS -# ANDROID_SUPPORTED_ABIS_${ARCH} -# ANDROID_SUPPORTED_NDK_VERSIONS diff --git a/build-config.ini b/build-config.ini new file mode 100644 index 00000000..272a1e78 --- /dev/null +++ b/build-config.ini @@ -0,0 +1,54 @@ +# +# Copyright 2011-2022 Ahmad Amarullah (http://amarullz.com/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#______________________________________________________________________________ +# +# Filename : build-config.ini +# Description : Default build configuration +# +# + This is part of libaroma, an embedded ui toolkit. +# + +## +## LIBAROMA_BUILD_FLAGS +## Add CFLAGS for build LIBAROMA. Mainly for defines +## +LIBAROMA_BUILD_FLAGS=" + -DLIBAROMA_CONFIG_OPENMP=1 + -DLIBAROMA_CONFIG_NOFONT_SUBPIXEL=1 + -DLIBAROMA_CONFIG_DEBUG_TRACE=0 + -DLIBAROMA_CONFIG_TEXT_NOHARFBUZZ=1 + -DLIBAROMA_CONFIG_DEBUG=3 + -DLIBAROMA_CONFIG_DEBUG_FILE=0 + -DLIBAROMA_CONFIG_DEBUG_MEMORY=0 + -DLIBAROMA_CONFIG_COMPILER_MESSAGE=1 + -DLIBAROMA_CONFIG_SHMEMFB=0 + -DMEM_SRCDST_SUPPORTED + -DAROMA_LINUX_NOCHECKFBSZ + -DLIBAROMA_PFLINUX_DUMMY_PTHREAD=1 +" + +## +## LIBAROMA_ROOT_PATH +## Root path libaroma source +## +LIBAROMA_ROOT_PATH=. + +## +## BUILD_ARCH +## * armv7 - For arm 32bit, raspberry pi or old android +## * aarch64 - For ARM 64bit processor, newer android, odroid, arm64 sbc +## * x86_64 - For intel/amd 64bit ( not cross compile ) +## +BUILD_ARCH=x86_64 diff --git a/build.sh b/build.sh new file mode 100644 index 00000000..284f3151 --- /dev/null +++ b/build.sh @@ -0,0 +1,67 @@ +#!/bin/bash +# +# Copyright 2011-2022 Ahmad Amarullah (http://amarullz.com/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#______________________________________________________________________________ +# +# Filename : build-config.ini +# Description : Builder caller +# +# + This is part of libaroma, an embedded ui toolkit. +# + +## +## Load default arch selection +## +eval "`cat ./build-config.ini`" + +## +## Or add argument +## +if [ "$1" == "armv7" ]; then + BUILD_ARCH=armv7 +elif [ "$1" == "aarch64" ]; then + BUILD_ARCH=aarch64 +elif [ "$1" == "x86_64" ]; then + BUILD_ARCH=x86_64 +fi + +echo "================================" +echo " BUILD ARCH: ${BUILD_ARCH}" +echo "================================" + +## +## Initializing Environment Variables +## +export LIBAROMA_PATH=`realpath $LIBAROMA_ROOT_PATH` +export SRC_PATH=`realpath ./src` +export LIBS_PATH=`realpath ./libs` +export BUILD_ARCH +export LIBAROMA_BUILD_FLAGS + +## +## Init arch build +## +cd build +mkdir -p ${BUILD_ARCH} + +## +## Running build script +## +if [ "$1" == "clean" ] || [ "$2" == "clean" ]; then + echo "Cleaning build" + rm -rf ${BUILD_ARCH}/* +else + bash ./build-${BUILD_ARCH}.sh +fi diff --git a/build/build-aarch64.sh b/build/build-aarch64.sh new file mode 100644 index 00000000..8096dc1d --- /dev/null +++ b/build/build-aarch64.sh @@ -0,0 +1,74 @@ +#!/bin/bash +# +# Copyright 2011-2022 Ahmad Amarullah (http://amarullz.com/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#______________________________________________________________________________ +# +# Filename : build-aarch64.sh +# Description : Build script for ARM-64bit +# +# + This is part of libaroma, an embedded ui toolkit. +# + +## +## Init Compiler Macros +## +export CROSS_COMPILER=aarch64-linux-gnu- +export CC=${CROSS_COMPILER}gcc +export AR=${CROSS_COMPILER}ar +export CPP=${CROSS_COMPILER}g++ +export CFLAGS=" + -fdata-sections -ffunction-sections -Wl,--gc-sections + -fPIC -DPIC -Wl,-s -Werror -ftree-vectorize + -fprefetch-loop-arrays -funsafe-math-optimizations + -fopenmp -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast + -D__ARM_HAVE_NEON +" +export LIBS_PATH=${LIBAROMA_PATH}/libs + +## +## ARCH dependent sources +## +export LIBEXTERNALS_ADD_SRC=" + ${LIBS_PATH}/png/arm/arm_init.c + ${LIBS_PATH}/png/arm/filter_neon.S + ${LIBS_PATH}/png/arm/filter_neon_intrinsics.c + -Wno-implicit-function-declaration + ${LIBS_PATH}/jpeg-turbo/simd/jsimd_arm64.c + ${LIBS_PATH}/jpeg-turbo/simd/jsimd_arm64_neon.S +" + +export LIBAROMA_ARCH_FLAGS="" + +export LIBAROMA_PLATFORM_SRC=" + ${LIBAROMA_PATH}/src/aroma/arch/arm64/android_memset.S + ${LIBAROMA_PATH}/src/contrib/platform/linux/fb_driver.c + ${LIBAROMA_PATH}/src/contrib/platform/linux/hid_driver.c + ${LIBAROMA_PATH}/src/contrib/platform/linux/platform.c +" + +export LIBAROMA_PLATFORM_INCLUDE=" + ${LIBAROMA_PATH}/src/contrib/platform/linux/include +" + +## +## builder.sh flag +## +export IS_ON_BUILD_ARCH="y" + +## +## Change build directory +## +cd ${BUILD_ARCH} +bash ../builder.sh diff --git a/build/build-armv7.sh b/build/build-armv7.sh new file mode 100644 index 00000000..57c8bc8e --- /dev/null +++ b/build/build-armv7.sh @@ -0,0 +1,73 @@ +#!/bin/bash +# +# Copyright 2011-2022 Ahmad Amarullah (http://amarullz.com/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#______________________________________________________________________________ +# +# Filename : build-armv7.sh +# Description : Build script for ARM-32bit +# +# + This is part of libaroma, an embedded ui toolkit. +# + +## +## Init Compiler Macros +## +export CROSS_COMPILER=arm-linux-gnueabihf- +export CC=${CROSS_COMPILER}gcc +export AR=${CROSS_COMPILER}ar +export CPP=${CROSS_COMPILER}g++ +export CFLAGS=" + -fdata-sections -ffunction-sections -Wl,--gc-sections + -fPIC -DPIC -Wl,-s -Werror -ftree-vectorize -mvectorize-with-neon-quad + -fprefetch-loop-arrays -funsafe-math-optimizations + -fopenmp -mfloat-abi=hard -mfpu=neon -D__ARM_HAVE_NEON +" +export LIBS_PATH=${LIBAROMA_PATH}/libs + +## +## ARCH dependent sources +## +export LIBEXTERNALS_ADD_SRC=" + ${LIBS_PATH}/png/arm/arm_init.c + ${LIBS_PATH}/png/arm/filter_neon.S + ${LIBS_PATH}/png/arm/filter_neon_intrinsics.c + ${LIBS_PATH}/jpeg-turbo/simd/jsimd_arm.c + ${LIBS_PATH}/jpeg-turbo/simd/jsimd_arm_neon.S +" + +export LIBAROMA_ARCH_FLAGS="" + +export LIBAROMA_PLATFORM_SRC=" + ${LIBAROMA_PATH}/src/aroma/arch/arm/memset32.S + ${LIBAROMA_PATH}/src/contrib/platform/linux/fb_driver.c + ${LIBAROMA_PATH}/src/contrib/platform/linux/hid_driver.c + ${LIBAROMA_PATH}/src/contrib/platform/linux/platform.c +" + +export LIBAROMA_PLATFORM_INCLUDE=" + ${LIBAROMA_PATH}/src/contrib/platform/linux/include +" + + +## +## builder.sh flag +## +export IS_ON_BUILD_ARCH="y" + +## +## Change build directory +## +cd ${BUILD_ARCH} +bash ../builder.sh diff --git a/build/build-x86_64.sh b/build/build-x86_64.sh new file mode 100644 index 00000000..9560326e --- /dev/null +++ b/build/build-x86_64.sh @@ -0,0 +1,72 @@ +#!/bin/bash +# +# Copyright 2011-2022 Ahmad Amarullah (http://amarullz.com/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#______________________________________________________________________________ +# +# Filename : build-x86_64.sh +# Description : Build script for Intel/AMD 64bit +# +# + This is part of libaroma, an embedded ui toolkit. +# + +## +## Init Compiler Macros +## +export CC=gcc +export AR=ar +export CPP=g++ +export CFLAGS=" + -march=core2 + -fdata-sections -ffunction-sections -Wl,--gc-sections + -fPIC -DPIC -Wl,-s -Werror -ftree-vectorize + -fprefetch-loop-arrays -funsafe-math-optimizations + -fopenmp -Wno-int-to-pointer-cast -Wno-pointer-to-int-cast +" +export LIBS_PATH=${LIBAROMA_PATH}/libs + +## +## ARCH dependent sources +## +export LIBEXTERNALS_ADD_SRC=" +" + +export LIBAROMA_ARCH_FLAGS=" + -DLIBAROMA_CONFIG_X86_SSE=1 + -DLIBAROMA_LINUX64 +" + +export LIBAROMA_PLATFORM_SRC=" + ${LIBAROMA_PATH}/src/aroma/arch/x86_64/android_memset16.S + ${LIBAROMA_PATH}/src/aroma/arch/x86_64/android_memset32.S + ${LIBAROMA_PATH}/src/contrib/platform/linux/fb_driver.c + ${LIBAROMA_PATH}/src/contrib/platform/linux/hid_driver.c + ${LIBAROMA_PATH}/src/contrib/platform/linux/platform.c +" + +export LIBAROMA_PLATFORM_INCLUDE=" + ${LIBAROMA_PATH}/src/contrib/platform/linux/include +" + + +## +## builder.sh flag +## +export IS_ON_BUILD_ARCH="y" + +## +## Change build directory +## +cd ${BUILD_ARCH} +bash ../builder.sh diff --git a/build/builder.sh b/build/builder.sh new file mode 100644 index 00000000..2c42d5d5 --- /dev/null +++ b/build/builder.sh @@ -0,0 +1,237 @@ +#!/bin/bash +# +# Copyright 2011-2022 Ahmad Amarullah (http://amarullz.com/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#______________________________________________________________________________ +# +# Filename : builder.sh +# Description : GCC Builder script for all arch +# +# + This is part of libaroma, an embedded ui toolkit. +# + +if [ -z ${IS_ON_BUILD_ARCH} ]; then + echo "Cannot run builder directly" + exit +fi + +## +## Build libexternals (zlib, freetype, hb-ucdn, minzip, png, jpeg) +## +if [ ! -f "libexternals.a" ]; then + echo "[*] Building libexternals.a" + mkdir -p obj + cd obj + echo " - Compiling libraries source" + ${CC} -c \ + ${CFLAGS} \ + \ + -DAVOID_TABLES \ + -DJPEG_LIB_VERSION__XXX=62 \ + -DNO_GETENV \ + -DWITH_SIMD=1 \ + -DMEM_SRCDST_SUPPORTED \ + \ + -DNV_ARM_NEON \ + -DANDROID_TILE_BASED_DECODE \ + -DFT2_BUILD_LIBRARY \ + -DFT2_NO_HARFBUZZ \ + -DDARWIN_NO_CARBON \ + \ + ${LIBS_PATH}/zlib/src/adler32.c \ + ${LIBS_PATH}/zlib/src/compress.c \ + ${LIBS_PATH}/zlib/src/crc32.c \ + ${LIBS_PATH}/zlib/src/deflate.c \ + ${LIBS_PATH}/zlib/src/gzclose.c \ + ${LIBS_PATH}/zlib/src/gzlib.c \ + ${LIBS_PATH}/zlib/src/gzread.c \ + ${LIBS_PATH}/zlib/src/gzwrite.c \ + ${LIBS_PATH}/zlib/src/infback.c \ + ${LIBS_PATH}/zlib/src/inflate.c \ + ${LIBS_PATH}/zlib/src/inftrees.c \ + ${LIBS_PATH}/zlib/src/inffast.c \ + ${LIBS_PATH}/zlib/src/trees.c \ + ${LIBS_PATH}/zlib/src/uncompr.c \ + ${LIBS_PATH}/zlib/src/zutil.c \ + -I${LIBS_PATH}/zlib/src \ + \ + ${LIBS_PATH}/freetype/src/base/ftbbox.c \ + ${LIBS_PATH}/freetype/src/base/ftbitmap.c \ + ${LIBS_PATH}/freetype/src/base/ftfstype.c \ + ${LIBS_PATH}/freetype/src/base/ftglyph.c \ + ${LIBS_PATH}/freetype/src/base/ftlcdfil.c \ + ${LIBS_PATH}/freetype/src/base/ftstroke.c \ + ${LIBS_PATH}/freetype/src/base/fttype1.c \ + ${LIBS_PATH}/freetype/src/base/ftbase.c \ + ${LIBS_PATH}/freetype/src/base/ftsystem.c \ + ${LIBS_PATH}/freetype/src/base/ftinit.c \ + ${LIBS_PATH}/freetype/src/base/ftgasp.c \ + ${LIBS_PATH}/freetype/src/raster/raster.c \ + ${LIBS_PATH}/freetype/src/sfnt/sfnt.c \ + ${LIBS_PATH}/freetype/src/smooth/smooth.c \ + ${LIBS_PATH}/freetype/src/autofit/autofit.c \ + ${LIBS_PATH}/freetype/src/truetype/truetype.c \ + ${LIBS_PATH}/freetype/src/cff/cff.c \ + ${LIBS_PATH}/freetype/src/cid/type1cid.c \ + ${LIBS_PATH}/freetype/src/bdf/bdf.c \ + ${LIBS_PATH}/freetype/src/type1/type1.c \ + ${LIBS_PATH}/freetype/src/type42/type42.c \ + ${LIBS_PATH}/freetype/src/winfonts/winfnt.c \ + ${LIBS_PATH}/freetype/src/pcf/pcf.c \ + ${LIBS_PATH}/freetype/src/pfr/pfr.c \ + ${LIBS_PATH}/freetype/src/psaux/psaux.c \ + ${LIBS_PATH}/freetype/src/psnames/psnames.c \ + ${LIBS_PATH}/freetype/src/pshinter/pshinter.c \ + ${LIBS_PATH}/freetype/src/gzip/ftgzip.c \ + ${LIBS_PATH}/freetype/src/lzw/ftlzw.c \ + -I${LIBS_PATH}/freetype/builds \ + -I${LIBS_PATH}/freetype/include \ + \ + ${LIBS_PATH}/harfbuzz-ng/src/hb-ucdn/ucdn.c \ + -I${LIBS_PATH}/harfbuzz-ng/src/hb-ucdn \ + \ + ${LIBS_PATH}/minzip/Hash.c \ + ${LIBS_PATH}/minzip/SysUtil.c \ + ${LIBS_PATH}/minzip/DirUtil.c \ + ${LIBS_PATH}/minzip/Inlines.c \ + ${LIBS_PATH}/minzip/Zip.c \ + \ + ${LIBS_PATH}/png/png.c \ + ${LIBS_PATH}/png/pngerror.c \ + ${LIBS_PATH}/png/pngget.c \ + ${LIBS_PATH}/png/pngmem.c \ + ${LIBS_PATH}/png/pngpread.c \ + ${LIBS_PATH}/png/pngread.c \ + ${LIBS_PATH}/png/pngrio.c \ + ${LIBS_PATH}/png/pngrtran.c \ + ${LIBS_PATH}/png/pngrutil.c \ + ${LIBS_PATH}/png/pngset.c \ + ${LIBS_PATH}/png/pngtrans.c \ + ${LIBS_PATH}/png/pngwio.c \ + ${LIBS_PATH}/png/pngwrite.c \ + ${LIBS_PATH}/png/pngwtran.c \ + ${LIBS_PATH}/png/pngwutil.c \ + -I${LIBS_PATH}/png \ + \ + ${LIBS_PATH}/jpeg-turbo/jcarith.c \ + ${LIBS_PATH}/jpeg-turbo/jaricom.c \ + ${LIBS_PATH}/jpeg-turbo/jdarith.c \ + ${LIBS_PATH}/jpeg-turbo/jcapimin.c \ + ${LIBS_PATH}/jpeg-turbo/jcapistd.c \ + ${LIBS_PATH}/jpeg-turbo/jccoefct.c \ + ${LIBS_PATH}/jpeg-turbo/jccolor.c \ + ${LIBS_PATH}/jpeg-turbo/jcdctmgr.c \ + ${LIBS_PATH}/jpeg-turbo/jchuff.c \ + ${LIBS_PATH}/jpeg-turbo/jcinit.c \ + ${LIBS_PATH}/jpeg-turbo/jcmainct.c \ + ${LIBS_PATH}/jpeg-turbo/jcmarker.c \ + ${LIBS_PATH}/jpeg-turbo/jcmaster.c \ + ${LIBS_PATH}/jpeg-turbo/jcomapi.c \ + ${LIBS_PATH}/jpeg-turbo/jcparam.c \ + ${LIBS_PATH}/jpeg-turbo/jcphuff.c \ + ${LIBS_PATH}/jpeg-turbo/jcprepct.c \ + ${LIBS_PATH}/jpeg-turbo/jcsample.c \ + ${LIBS_PATH}/jpeg-turbo/jctrans.c \ + ${LIBS_PATH}/jpeg-turbo/jdapimin.c \ + ${LIBS_PATH}/jpeg-turbo/jdapistd.c \ + ${LIBS_PATH}/jpeg-turbo/jdatadst.c \ + ${LIBS_PATH}/jpeg-turbo/jdatasrc.c \ + ${LIBS_PATH}/jpeg-turbo/jdcoefct.c \ + ${LIBS_PATH}/jpeg-turbo/jdcolor.c \ + ${LIBS_PATH}/jpeg-turbo/jddctmgr.c \ + ${LIBS_PATH}/jpeg-turbo/jdhuff.c \ + ${LIBS_PATH}/jpeg-turbo/jdinput.c \ + ${LIBS_PATH}/jpeg-turbo/jdmainct.c \ + ${LIBS_PATH}/jpeg-turbo/jdmarker.c \ + ${LIBS_PATH}/jpeg-turbo/jdmaster.c \ + ${LIBS_PATH}/jpeg-turbo/jdmerge.c \ + ${LIBS_PATH}/jpeg-turbo/jdphuff.c \ + ${LIBS_PATH}/jpeg-turbo/jdpostct.c \ + ${LIBS_PATH}/jpeg-turbo/jdsample.c \ + ${LIBS_PATH}/jpeg-turbo/jdtrans.c \ + ${LIBS_PATH}/jpeg-turbo/jerror.c \ + ${LIBS_PATH}/jpeg-turbo/jfdctflt.c \ + ${LIBS_PATH}/jpeg-turbo/jfdctfst.c \ + ${LIBS_PATH}/jpeg-turbo/jfdctint.c \ + ${LIBS_PATH}/jpeg-turbo/jidctflt.c \ + ${LIBS_PATH}/jpeg-turbo/jidctfst.c \ + ${LIBS_PATH}/jpeg-turbo/jidctint.c \ + ${LIBS_PATH}/jpeg-turbo/jidctred.c \ + ${LIBS_PATH}/jpeg-turbo/jquant1.c \ + ${LIBS_PATH}/jpeg-turbo/jquant2.c \ + ${LIBS_PATH}/jpeg-turbo/jutils.c \ + ${LIBS_PATH}/jpeg-turbo/jmemmgr.c \ + ${LIBS_PATH}/jpeg-turbo/jdatadst.c \ + ${LIBS_PATH}/jpeg-turbo/jmemnobs.c \ + -I${LIBS_PATH}/jpeg-turbo \ + -I${LIBS_PATH}/jpeg-turbo/prebuilt/include \ + \ + ${LIBEXTERNALS_ADD_SRC} + + echo " - Packing libexternals.a" + ${AR} rcs ../libexternals.a *.o + echo " - Cleanup" + rm *.o + cd .. +else + echo "[*] libexternals.a compiled" +fi + +## +## Build libaroma +## +echo "[*] Building libaroma.a" +mkdir -p obj +cd obj +echo " - Compiling libaroma source" +echo " " +echo " -------------------------" +echo " " +${CC} -c -Wno-format-truncation \ + ${CFLAGS} \ + ${LIBAROMA_ARCH_FLAGS} \ + ${LIBAROMA_BUILD_FLAGS} \ + -DLIBAROMA_CONFIG_SHMEM_PREFIX="\"/libaromashm-\"" \ + ${LIBAROMA_PLATFORM_SRC} \ + \ + ${LIBAROMA_PATH}/src/aroma/aroma.c \ + ${LIBAROMA_PATH}/src/aroma/version.c \ + ${LIBAROMA_PATH}/src/aroma/utils/*.c \ + ${LIBAROMA_PATH}/src/aroma/debug/*.c \ + ${LIBAROMA_PATH}/src/aroma/graph/*.c \ + ${LIBAROMA_PATH}/src/aroma/graph/draw/*.c \ + ${LIBAROMA_PATH}/src/aroma/graph/engine/*.c \ + ${LIBAROMA_PATH}/src/aroma/hid/*.c \ + ${LIBAROMA_PATH}/src/aroma/ui/*.c \ + ${LIBAROMA_PATH}/src/aroma/controls/*.c \ + ${LIBAROMA_PATH}/src/aroma/controls/listitem/*.c \ + \ + -I${LIBAROMA_PATH}/include \ + -I${LIBAROMA_PLATFORM_INCLUDE} \ + -I${LIBAROMA_PATH}/src \ + -I${LIBAROMA_PATH}/libs/zlib/src \ + -I${LIBAROMA_PATH}/libs/freetype/builds \ + -I${LIBAROMA_PATH}/libs/freetype/include \ + -I${LIBAROMA_PATH}/libs/minzip \ + -I${LIBAROMA_PATH}/libs/png \ + -I${LIBAROMA_PATH}/libs/jpeg-turbo \ + -I${LIBAROMA_PATH}/libs/harfbuzz-ng/src/hb-ucdn +echo " " +echo " -------------------------" +echo " " +echo " - Packing libaroma.a" +${AR} rcs ../libaroma.a *.o +echo " - Cleanup" +rm *.o +cd .. diff --git a/examples/recovery/res/ico/logs.png b/examples/recovery/res/ico/logs.png deleted file mode 100644 index 3deba55a..00000000 Binary files a/examples/recovery/res/ico/logs.png and /dev/null differ diff --git a/examples/recovery/res/ico/partition.png b/examples/recovery/res/ico/partition.png deleted file mode 100644 index 73372f48..00000000 Binary files a/examples/recovery/res/ico/partition.png and /dev/null differ diff --git a/include/aroma/controls/ctl_bar.h b/include/aroma/controls/ctl_bar.h index 87acdbe8..28124de0 100644 --- a/include/aroma/controls/ctl_bar.h +++ b/include/aroma/controls/ctl_bar.h @@ -110,6 +110,13 @@ byte libaroma_ctl_bar_update(LIBAROMA_CONTROLP ctl); byte libaroma_ctl_bar_set_title(LIBAROMA_CONTROLP ctl, char * title, byte update_now); +/* + * Function : libaroma_ctl_bar_get_title + * Return Value: char * + * Descriptions: get title + */ +char * libaroma_ctl_bar_get_title(LIBAROMA_CONTROLP ctl); + /* * Function : libaroma_ctl_bar_set_subtitle * Return Value: byte diff --git a/include/aroma/controls/ctl_button.h b/include/aroma/controls/ctl_button.h index 26a36b4a..15611e13 100644 --- a/include/aroma/controls/ctl_button.h +++ b/include/aroma/controls/ctl_button.h @@ -32,6 +32,7 @@ #define LIBAROMA_CTL_BUTTON_COLORED 0x2 #define LIBAROMA_CTL_BUTTON_DISABLED 0x4 #define LIBAROMA_CTL_BUTTON_CIRCLE 0x8 +#define LIBAROMA_CTL_BUTTON_LEFT 0x10 /* * Function : libaroma_ctl_button diff --git a/include/aroma/controls/ctl_image.h b/include/aroma/controls/ctl_image.h index fa3c0fcb..fb7db318 100644 --- a/include/aroma/controls/ctl_image.h +++ b/include/aroma/controls/ctl_image.h @@ -27,6 +27,11 @@ #ifndef __libaroma_ctl_image_h__ #define __libaroma_ctl_image_h__ +#define LIBAROMA_CTL_IMAGE_MODE_NOSMOOTH 0x01 +#define LIBAROMA_CTL_IMAGE_MODE_CENTER 0x02 +#define LIBAROMA_CTL_IMAGE_MODE_COVER 0x10 +#define LIBAROMA_CTL_IMAGE_MODE_FIT 0x20 +#define LIBAROMA_CTL_IMAGE_MODE_NOSCALE 0x30 byte libaroma_ctl_image_set_image( LIBAROMA_CONTROLP ctl,char * src,byte update); @@ -46,5 +51,8 @@ LIBAROMA_CONTROLP libaroma_ctl_image_canvas( byte libaroma_ctl_image_hidden( LIBAROMA_CONTROLP ctl,byte hidden); - + +byte libaroma_ctl_image_mode( + LIBAROMA_CONTROLP ctl, byte mode); + #endif /* __libaroma_ctl_image_h__ */ diff --git a/include/aroma/controls/ctl_label.h b/include/aroma/controls/ctl_label.h index 60a958e3..a63da7b0 100644 --- a/include/aroma/controls/ctl_label.h +++ b/include/aroma/controls/ctl_label.h @@ -33,6 +33,15 @@ int libaroma_ctl_label_height( dword flags, byte lineheight ); +void libaroma_ctl_label_setshadow( + LIBAROMA_CONTROLP ctl, + byte isshadow, + int radius, + word shadow_color, + byte shadow_opacity, + int shadow_x, + int shadow_y); + LIBAROMA_CONTROLP libaroma_ctl_label_valign( LIBAROMA_WINDOWP win, word id, const char * text, int x, int y, int w, int h, diff --git a/include/aroma/controls/ctl_progress.h b/include/aroma/controls/ctl_progress.h index 2c6a8ded..169bbd72 100644 --- a/include/aroma/controls/ctl_progress.h +++ b/include/aroma/controls/ctl_progress.h @@ -34,6 +34,7 @@ #define LIBAROMA_CTL_PROGRESS_INDETERMINATE 0x1 #define LIBAROMA_CTL_PROGRESS_QUERY 0x2 #define LIBAROMA_CTL_PROGRESS_CIRCULAR 0x4 +#define LIBAROMA_CTL_PROGRESS_HIDDEN 0x8 /* * Function : libaroma_ctl_progress diff --git a/include/aroma/graph/fb.h b/include/aroma/graph/fb.h index 1f0175d3..98ca6e91 100644 --- a/include/aroma/graph/fb.h +++ b/include/aroma/graph/fb.h @@ -22,7 +22,7 @@ * */ #ifndef __libaroma_aroma_h__ - #error "Include instead." +#error "Include instead." #endif #ifndef __libaroma_fb_h__ #define __libaroma_fb_h__ @@ -38,7 +38,7 @@ * Descriptions: Framebuffer type structure */ typedef struct _LIBAROMA_FB LIBAROMA_FB; -typedef struct _LIBAROMA_FB * LIBAROMA_FBP; +typedef struct _LIBAROMA_FB *LIBAROMA_FBP; /* * Typedef : LIBAROMA_FB_INITIALIZER @@ -58,37 +58,37 @@ byte libaroma_fb_set_initializer(LIBAROMA_FB_INITIALIZER cb); * Typedef : LIBAROMA_FB, * LIBAROMA_FBP * Descriptions: Framebuffer Structure */ -struct _LIBAROMA_FB{ +struct _LIBAROMA_FB { /* main info */ int w; /* width */ int h; /* height */ int sz; /* width x height */ byte double_buffer; /* is double buffer driver */ voidp internal; /* driver internal data */ - + /* callbacks */ void (*release)(LIBAROMA_FBP); byte (*snapshoot)(LIBAROMA_FBP, wordp); byte (*config)(LIBAROMA_FBP, const char *, const char *, dword); - + /* post callbacks */ byte (*start_post)(LIBAROMA_FBP); - byte (*post)(LIBAROMA_FBP, wordp __restrict, - int, int, int, int, int, int, int, int); + byte (*post)(LIBAROMA_FBP, wordp __restrict, int, int, int, int, int, int, + int, int); byte (*end_post)(LIBAROMA_FBP); - + /* Optional - DPI */ int dpi; byte bigscreen; - + /* post flag */ byte onpost; - + /* AROMA CORE Runtime Data */ LIBAROMA_CANVASP canvas; byte internal_canvas; }; - + /* * Function : libaroma_fb * Return Value: LIBAROMA_FBP @@ -108,21 +108,14 @@ byte libaroma_fb_sync(); * Return Value: byte * Descriptions: sync framebuffer area */ -byte libaroma_fb_sync_area( - int x, - int y, - int w, - int h); +byte libaroma_fb_sync_area(int x, int y, int w, int h); /* * Function : libaroma_fb_config * Return Value: byte * Descriptions: set driver runtime config */ -byte libaroma_fb_config( - char * name, - char * svalue, - dword dvalue); +byte libaroma_fb_config(char *name, char *svalue, dword dvalue); /* * Function : libaroma_fb_is_landscape @@ -136,16 +129,14 @@ byte libaroma_fb_is_landscape(); * Return Value: int * Descriptions: convert px to dp */ -int libaroma_dp( - int dp); +int libaroma_dp(int dp); /* * Function : libaroma_px * Return Value: int * Descriptions: convert dp to px */ -int libaroma_px( - int px); +int libaroma_px(int px); /* * Function : libaroma_width_dp @@ -194,24 +185,30 @@ byte libaroma_fb_end_post(); * Return Value: byte * Descriptions: post canvas into display directly */ -byte libaroma_fb_post( - LIBAROMA_CANVASP canvas, - int dx, int dy, - int sx, int sy, - int w, int h -); +byte libaroma_fb_post(LIBAROMA_CANVASP canvas, int dx, int dy, int sx, int sy, + int w, int h); + +/* + * Function : libaroma_fb_sync_enable + * Return Value: byte + * Descriptions: enable/disable sync + */ +byte libaroma_fb_sync_enable(byte state); /* sync & refresh aliases */ -#define libaroma_sync() \ - libaroma_fb_sync() -#define libaroma_sync_ex(x,y,w,h) \ - libaroma_fb_sync_area(x,y,w,h) +#define libaroma_sync() libaroma_fb_sync() +#define libaroma_sync_ex(x, y, w, h) libaroma_fb_sync_area(x, y, w, h) /* fb info shortcuts */ -#define _LIBAROMA_FB_VALUE(X,ifnull) (libaroma_fb()?(libaroma_fb()->X):ifnull) -#define LIBAROMA_FB_CANVAS _LIBAROMA_FB_VALUE(canvas,NULL) -#define LIBAROMA_FB_W _LIBAROMA_FB_VALUE(w,0) -#define LIBAROMA_FB_H _LIBAROMA_FB_VALUE(h,0) -#define LIBAROMA_FB_DPI _LIBAROMA_FB_VALUE(dpi,0) +#define _LIBAROMA_FB_VALUE(X, ifnull) \ + (libaroma_fb() ? (libaroma_fb()->X) : ifnull) +#define LIBAROMA_FB_CANVAS _LIBAROMA_FB_VALUE(canvas, NULL) +#define LIBAROMA_FB_W _LIBAROMA_FB_VALUE(w, 0) +#define LIBAROMA_FB_H _LIBAROMA_FB_VALUE(h, 0) +#define LIBAROMA_FB_DPI _LIBAROMA_FB_VALUE(dpi, 0) + +/* driver */ +typedef byte (*LIBAROMA_FB_DRIVER)(LIBAROMA_FBP); +void libaroma_fb_set_driver(LIBAROMA_FB_DRIVER driver_init); #endif /* __libaroma_fb_h__ */ diff --git a/include/aroma/graph/jpeg.h b/include/aroma/graph/jpeg.h index fbcc7ffc..4f417b86 100644 --- a/include/aroma/graph/jpeg.h +++ b/include/aroma/graph/jpeg.h @@ -22,7 +22,7 @@ * */ #ifndef __libaroma_aroma_h__ - #error "Include instead." +#error "Include instead." #endif #ifndef __libaroma_jpeg_h__ #define __libaroma_jpeg_h__ @@ -33,37 +33,38 @@ * Return Value: LIBAROMA_CANVASP * Descriptions: read jpeg - extended */ -LIBAROMA_CANVASP libaroma_jpeg_ex( - LIBAROMA_STREAMP stream, - byte freeStream, - byte hicolor); +LIBAROMA_CANVASP libaroma_jpeg_ex(LIBAROMA_STREAMP stream, byte freeStream, + byte hicolor); /* libaroma_jpeg_ex aliases */ #define libaroma_jpeg(stream, freeStream) \ libaroma_jpeg_ex(stream, freeStream, 0) -#define libaroma_jpeg_uri_ex(uri,hicolor) \ +#define libaroma_jpeg_uri_ex(uri, hicolor) \ libaroma_jpeg_ex(libaroma_stream(uri), 1, hicolor) -#define libaroma_jpeg_uri(uri) \ - libaroma_jpeg_ex(libaroma_stream(uri), 1, 0) +#define libaroma_jpeg_uri(uri) libaroma_jpeg_ex(libaroma_stream(uri), 1, 0) #define libaroma_jpeg_zip(path, zpath, hicolor) \ - libaroma_jpeg_ex(libaroma_stream_zip(path,zpath),1,hicolor) + libaroma_jpeg_ex(libaroma_stream_zip(path, zpath), 1, hicolor) #define libaroma_jpeg_mzip(zip, zpath, hicolor) \ - libaroma_jpeg_ex(libaroma_stream_mzip(zip,zpath),1,hicolor) + libaroma_jpeg_ex(libaroma_stream_mzip(zip, zpath), 1, hicolor) #define libaroma_jpeg_file(filepath, hicolor) \ - libaroma_jpeg_ex(libaroma_stream_file(filepath),1,hicolor) + libaroma_jpeg_ex(libaroma_stream_file(filepath), 1, hicolor) /* - * Function : libaroma_jpeg_draw + * Function : libaroma_jpeg_draw_ex * Return Value: byte * Descriptions: read jpeg & directly draw it */ -byte libaroma_jpeg_draw( - LIBAROMA_STREAMP stream, - byte freeStream, - LIBAROMA_CANVASP cv, - int dx, int dy, int dw, int dh, - byte dither - ); +byte libaroma_jpeg_draw_ex(LIBAROMA_STREAMP stream, byte freeStream, + LIBAROMA_CANVASP cv, int dx, int dy, int dw, int dh, + byte dither, byte resize); +#define libaroma_jpeg_draw(s, f, c, x, y, w, h, d) \ + libaroma_jpeg_draw_ex(s, f, c, x, y, w, h, d, 1) + +byte libaroma_jpeg_save(LIBAROMA_CANVASP sc, char *filename, int quality); +byte libaroma_jpeg_savemem(LIBAROMA_CANVASP sc, unsigned long *jpegSize, + bytep *jpegBuf, int quality); +byte libaroma_jpeg_savemem_scale(LIBAROMA_CANVASP sc, unsigned long *jpegSize, + bytep *jpegBuf, int quality, float divsz); #endif /* LIBAROMA_CONFIG_NOJPEG */ #endif /* __libaroma_jpeg_h__ */ diff --git a/include/aroma/hid/hid.h b/include/aroma/hid/hid.h index c095100f..81ae9c92 100644 --- a/include/aroma/hid/hid.h +++ b/include/aroma/hid/hid.h @@ -22,45 +22,45 @@ * */ #ifndef __libaroma_aroma_h__ - #error "Include instead." +#error "Include instead." #endif #ifndef __libaroma_hid_h__ #define __libaroma_hid_h__ /* hid macros */ -#define LIBAROMA_HID_KEYCODE_MAX 0x200 -#define LIBAROMA_HID_TOUCH_KEYCODE (LIBAROMA_HID_KEYCODE_MAX-1) -#define LIBAROMA_HID_WHEEL_KEYCODE (LIBAROMA_HID_KEYCODE_MAX-2) +#define LIBAROMA_HID_KEYCODE_MAX 0x200 +#define LIBAROMA_HID_TOUCH_KEYCODE (LIBAROMA_HID_KEYCODE_MAX - 1) +#define LIBAROMA_HID_WHEEL_KEYCODE (LIBAROMA_HID_KEYCODE_MAX - 2) /* Input Event Type */ -#define LIBAROMA_HID_EV_TYPE_NONE 0x00 /* Won't processed */ -#define LIBAROMA_HID_EV_TYPE_KEY 0x01 /* Keypad/Keyboards */ -#define LIBAROMA_HID_EV_TYPE_TOUCH 0x02 /* Touch Screen */ +#define LIBAROMA_HID_EV_TYPE_NONE 0x00 /* Won't processed */ +#define LIBAROMA_HID_EV_TYPE_KEY 0x01 /* Keypad/Keyboards */ +#define LIBAROMA_HID_EV_TYPE_TOUCH 0x02 /* Touch Screen */ /* Get Input Return Values */ -#define LIBAROMA_HID_EV_RET_NONE 0x00 /* ignore */ -#define LIBAROMA_HID_EV_RET_SELECT 0x01 /* enter, select, power, .. */ -#define LIBAROMA_HID_EV_RET_MENU 0x02 /* menu / search button, .. */ -#define LIBAROMA_HID_EV_RET_BACK 0x03 /* back, esc, .. */ -#define LIBAROMA_HID_EV_RET_UP 0x04 /* up */ -#define LIBAROMA_HID_EV_RET_DOWN 0x05 /* down */ -#define LIBAROMA_HID_EV_RET_TOUCH 0x06 /* touch */ -#define LIBAROMA_HID_EV_RET_RAWKEY 0x07 /* raw keycode */ -#define LIBAROMA_HID_EV_RET_EXIT 0xcc /* halt */ -#define LIBAROMA_HID_EV_RET_ERROR 0xdd /* error */ +#define LIBAROMA_HID_EV_RET_NONE 0x00 /* ignore */ +#define LIBAROMA_HID_EV_RET_SELECT 0x01 /* enter, select, power, .. */ +#define LIBAROMA_HID_EV_RET_MENU 0x02 /* menu / search button, .. */ +#define LIBAROMA_HID_EV_RET_BACK 0x03 /* back, esc, .. */ +#define LIBAROMA_HID_EV_RET_UP 0x04 /* up */ +#define LIBAROMA_HID_EV_RET_DOWN 0x05 /* down */ +#define LIBAROMA_HID_EV_RET_TOUCH 0x06 /* touch */ +#define LIBAROMA_HID_EV_RET_RAWKEY 0x07 /* raw keycode */ +#define LIBAROMA_HID_EV_RET_EXIT 0xcc /* halt */ +#define LIBAROMA_HID_EV_RET_ERROR 0xdd /* error */ /* Input Event State */ -#define LIBAROMA_HID_EV_STATE_UP 0x00 /* key/touch up */ -#define LIBAROMA_HID_EV_STATE_DOWN 0x01 /* key/touch down */ -#define LIBAROMA_HID_EV_STATE_MOVE 0x02 /* move */ -#define LIBAROMA_HID_EV_STATE_CANCEL 0x03 /* canceled */ +#define LIBAROMA_HID_EV_STATE_UP 0x00 /* key/touch up */ +#define LIBAROMA_HID_EV_STATE_DOWN 0x01 /* key/touch down */ +#define LIBAROMA_HID_EV_STATE_MOVE 0x02 /* move */ +#define LIBAROMA_HID_EV_STATE_CANCEL 0x03 /* canceled */ /* * Typedef : LIBAROMA_HID * Descriptions: hid type structure */ typedef struct _LIBAROMA_HID LIBAROMA_HID; -typedef struct _LIBAROMA_HID * LIBAROMA_HIDP; +typedef struct _LIBAROMA_HID *LIBAROMA_HIDP; /* * Typedef : LIBAROMA_HID_INITIALIZER @@ -80,7 +80,7 @@ byte libaroma_hid_set_initializer(LIBAROMA_HID_INITIALIZER cb); * Descriptions: hid event type structure */ typedef struct _LIBAROMA_HID_EVENT LIBAROMA_HID_EVENT; -typedef struct _LIBAROMA_HID_EVENT * LIBAROMA_HID_EVENTP; +typedef struct _LIBAROMA_HID_EVENT *LIBAROMA_HID_EVENTP; /* * Structure : _LIBAROMA_HID @@ -89,20 +89,20 @@ typedef struct _LIBAROMA_HID_EVENT * LIBAROMA_HID_EVENTP; */ struct _LIBAROMA_HID { voidp internal; - + /* driver callbacks */ void (*release)(LIBAROMA_HIDP); byte (*getinput)(LIBAROMA_HIDP, LIBAROMA_HID_EVENTP); byte (*config)(LIBAROMA_HIDP, const char *, const char *, dword); - + /* libaroma usable data */ - int screen_width; - int screen_height; - byte key_pressed[LIBAROMA_HID_KEYCODE_MAX / 8]; - + int screen_width; + int screen_height; + byte key_pressed[LIBAROMA_HID_KEYCODE_MAX / 8]; + /* touch move informations */ - int touch_last_x; - int touch_last_y; + int touch_last_x; + int touch_last_y; }; /* @@ -111,11 +111,11 @@ struct _LIBAROMA_HID { * Descriptions: hid structure */ struct _LIBAROMA_HID_EVENT { - byte type; - int key; - byte state; - int x; - int y; + byte type; + int key; + byte state; + int x; + int y; }; /* @@ -151,7 +151,12 @@ byte libaroma_hid_get(LIBAROMA_HID_EVENTP e); * Return Value: byte * Descriptions: runtime config */ -byte libaroma_hid_config(char * name,char * svalue,dword dvalue); +byte libaroma_hid_config(char *name, char *svalue, dword dvalue); + +void libaroma_hid_restart(); +/* driver */ +typedef byte (*LIBAROMA_HID_DRIVER)(LIBAROMA_HIDP); +void libaroma_hid_set_driver(LIBAROMA_HID_DRIVER driver_init); #endif /* __libaroma_hid_h__ */ diff --git a/include/aroma/hid/messages.h b/include/aroma/hid/messages.h index 3b8922f6..617f3c7f 100644 --- a/include/aroma/hid/messages.h +++ b/include/aroma/hid/messages.h @@ -22,7 +22,7 @@ * */ #ifndef __libaroma_aroma_h__ - #error "Include instead." +#error "Include instead." #endif #ifndef __libaroma_messages_h__ #define __libaroma_messages_h__ @@ -34,37 +34,37 @@ * Descriptions: message structure */ typedef struct _LIBAROMA_MSG LIBAROMA_MSG; -typedef struct _LIBAROMA_MSG * LIBAROMA_MSGP; -struct _LIBAROMA_MSG{ - byte msg; /* message name - LIBAROMA_MSG_ */ - byte state; /* state parameter */ - int key; /* key code */ - int x; /* x parameter */ - int y; /* y parameter */ - voidp d; /* pointer parameter */ - long sent; /* send time */ +typedef struct _LIBAROMA_MSG* LIBAROMA_MSGP; +struct _LIBAROMA_MSG { + byte msg; /* message name - LIBAROMA_MSG_ */ + byte state; /* state parameter */ + int key; /* key code */ + int x; /* x parameter */ + int y; /* y parameter */ + voidp d; /* pointer parameter */ + long sent; /* send time */ }; /* Message Values */ -#define LIBAROMA_MSG_USR(X) (0xC0|X) /* user messages */ -#define LIBAROMA_MSG_SYS(X) (0x80|X) /* system/window messages */ -#define LIBAROMA_MSG_KEY(X) (0x40|X) /* key event */ -#define LIBAROMA_MSG_NONE 0x00 /* not valid message */ -#define LIBAROMA_MSG_EXIT 0x01 /* should break the dispatch */ -#define LIBAROMA_MSG_OK 0x02 /* ok message */ -#define LIBAROMA_MSG_BACK 0x03 /* back message */ -#define LIBAROMA_MSG_NEXT 0x04 /* next message */ -#define LIBAROMA_MSG_MENU 0x05 /* show menu event */ -#define LIBAROMA_MSG_TOUCH 0x06 /* touch event */ -#define LIBAROMA_MSG_KEY_SELECT LIBAROMA_MSG_KEY(LIBAROMA_HID_EV_RET_SELECT) -#define LIBAROMA_MSG_KEY_MENU LIBAROMA_MSG_KEY(LIBAROMA_HID_EV_RET_MENU) -#define LIBAROMA_MSG_KEY_BACK LIBAROMA_MSG_KEY(LIBAROMA_HID_EV_RET_BACK) -#define LIBAROMA_MSG_KEY_UP LIBAROMA_MSG_KEY(LIBAROMA_HID_EV_RET_UP) -#define LIBAROMA_MSG_KEY_DOWN LIBAROMA_MSG_KEY(LIBAROMA_HID_EV_RET_DOWN) -#define LIBAROMA_MSG_KEY_RAWKEY LIBAROMA_MSG_KEY(LIBAROMA_HID_EV_RET_RAWKEY) -#define LIBAROMA_MSG_ISUSER(X) ((0xC0&X)==0xC0) /* user event */ -#define LIBAROMA_MSG_ISSYS(X) ((0xC0&X)==0x80) /* sys event */ -#define LIBAROMA_MSG_ISKEY(X) ((0xC0&X)==0x40) /* key event */ +#define LIBAROMA_MSG_USR(X) (0xC0 | X) /* user messages */ +#define LIBAROMA_MSG_SYS(X) (0x80 | X) /* system/window messages */ +#define LIBAROMA_MSG_KEY(X) (0x40 | X) /* key event */ +#define LIBAROMA_MSG_NONE 0x00 /* not valid message */ +#define LIBAROMA_MSG_EXIT 0x01 /* should break the dispatch */ +#define LIBAROMA_MSG_OK 0x02 /* ok message */ +#define LIBAROMA_MSG_BACK 0x03 /* back message */ +#define LIBAROMA_MSG_NEXT 0x04 /* next message */ +#define LIBAROMA_MSG_MENU 0x05 /* show menu event */ +#define LIBAROMA_MSG_TOUCH 0x06 /* touch event */ +#define LIBAROMA_MSG_KEY_SELECT LIBAROMA_MSG_KEY(LIBAROMA_HID_EV_RET_SELECT) +#define LIBAROMA_MSG_KEY_MENU LIBAROMA_MSG_KEY(LIBAROMA_HID_EV_RET_MENU) +#define LIBAROMA_MSG_KEY_BACK LIBAROMA_MSG_KEY(LIBAROMA_HID_EV_RET_BACK) +#define LIBAROMA_MSG_KEY_UP LIBAROMA_MSG_KEY(LIBAROMA_HID_EV_RET_UP) +#define LIBAROMA_MSG_KEY_DOWN LIBAROMA_MSG_KEY(LIBAROMA_HID_EV_RET_DOWN) +#define LIBAROMA_MSG_KEY_RAWKEY LIBAROMA_MSG_KEY(LIBAROMA_HID_EV_RET_RAWKEY) +#define LIBAROMA_MSG_ISUSER(X) ((0xC0 & X) == 0xC0) /* user event */ +#define LIBAROMA_MSG_ISSYS(X) ((0xC0 & X) == 0x80) /* sys event */ +#define LIBAROMA_MSG_ISKEY(X) ((0xC0 & X) == 0x40) /* key event */ /* * Function : libaroma_msg_start @@ -80,26 +80,26 @@ void libaroma_msg_start(); */ void libaroma_msg_stop(); +/* + * Function : libaroma_msg_post_ex + * Return Value: byte + * Descriptions: post user message with unshift + */ +byte libaroma_msg_post_ex(byte msg, byte state, int key, int x, int y, voidp d, + byte unshift); + /* * Function : libaroma_msg_post * Return Value: byte * Descriptions: post user message */ -byte libaroma_msg_post( - byte msg, - byte state, - int key, - int x, - int y, - voidp d -); +byte libaroma_msg_post(byte msg, byte state, int key, int x, int y, voidp d); /* * Function : libaroma_msg * Return Value: byte * Descriptions: get message from queue */ -byte libaroma_msg( - LIBAROMA_MSGP msg); +byte libaroma_msg(LIBAROMA_MSGP msg); #endif /* __libaroma_messages_h__ */ diff --git a/include/aroma/types.h b/include/aroma/types.h index c3402155..2797a491 100644 --- a/include/aroma/types.h +++ b/include/aroma/types.h @@ -48,4 +48,25 @@ typedef void * voidp; typedef uint32_t uchar; typedef uchar * ucharp; +/* MIN / MAX */ +static inline int __MAX(int a, int b){ + return (a>b)?a:b; +} +static inline int __MIN(int a, int b){ + return (ab)?a:b; +} +static inline float __FMIN(float a, float b){ + return (ab)?a:b; +} +static inline double __DMIN(double a, double b){ + return (a instead." +#error "Include instead." #endif #ifndef __libaroma_window_manager_h__ #define __libaroma_window_manager_h__ /* defines */ -#define LIBAROMA_WM_MSG_UNHANDLED 0x0 -#define LIBAROMA_WM_MSG_HANDLED 0x1 -#define LIBAROMA_WM_MSG_EXIT 0x2 -#define LIBAROMA_WM_FLAG_RESET_COLOR 0x1 -#define LIBAROMA_WM_FLAG_RESET_THEME 0x2 -#define LIBAROMA_WM_FLAG_THEME_PNG9P 0x1 -#define LIBAROMA_WM_FLAG_THEME_WMFREE 0x2 +#define LIBAROMA_WM_MSG_UNHANDLED 0x0 +#define LIBAROMA_WM_MSG_HANDLED 0x1 +#define LIBAROMA_WM_MSG_EXIT 0x2 +#define LIBAROMA_WM_FLAG_RESET_COLOR 0x1 +#define LIBAROMA_WM_FLAG_RESET_THEME 0x2 +#define LIBAROMA_WM_FLAG_THEME_PNG9P 0x1 +#define LIBAROMA_WM_FLAG_THEME_WMFREE 0x2 /* * Structure : _LIBAROMA_WM @@ -42,29 +42,27 @@ * Descriptions: window manager structure */ typedef struct _LIBAROMA_WM LIBAROMA_WM; -typedef struct _LIBAROMA_WM * LIBAROMA_WMP; +typedef struct _LIBAROMA_WM* LIBAROMA_WMP; /* * Typedef : LIBAROMA_WMCB_* * Descriptions: window manager callback */ -typedef byte (*LIBAROMA_WMCB_MESSAGE_HANDLER) \ - (LIBAROMA_WMP, LIBAROMA_MSGP); -typedef void (*LIBAROMA_WMCB_RESET_HANDLER) \ - (LIBAROMA_WMP, byte flags); +typedef byte (*LIBAROMA_WMCB_MESSAGE_HANDLER)(LIBAROMA_WMP, LIBAROMA_MSGP); +typedef void (*LIBAROMA_WMCB_RESET_HANDLER)(LIBAROMA_WMP, byte flags); typedef byte (*LIBAROMA_WMCB_UI_THREAD)(); - + /* * Structure : _LIBAROMA_WM * Typedef : LIBAROMA_WM, * LIBAROMA_WMP * Descriptions: window manager structure */ -struct _LIBAROMA_WM{ +struct _LIBAROMA_WM { LIBAROMA_COLORSET colorset; /* default colorset */ - + LIBAROMA_SARRAYP theme; /* themeset */ LIBAROMA_SARRAYP color; /* colorset */ - + /* hooker callbacks */ LIBAROMA_WMCB_MESSAGE_HANDLER message_handler; LIBAROMA_WMCB_RESET_HANDLER reset_handler; @@ -75,17 +73,17 @@ struct _LIBAROMA_WM{ int y; int w; int h; - + /* window sync */ byte sync_all; int sync_x; int sync_y; int sync_w; int sync_h; - + /* message state */ LIBAROMA_STACKP queue; - + byte client_started; LIBAROMA_WINDOWP active_window; LIBAROMA_CANVASP workspace_bg; @@ -97,8 +95,8 @@ struct _LIBAROMA_WM{ * Descriptions: theme structure */ typedef struct _LIBAROMA_WM_THEME LIBAROMA_WM_THEME; -typedef struct _LIBAROMA_WM_THEME * LIBAROMA_WM_THEMEP; -struct _LIBAROMA_WM_THEME{ +typedef struct _LIBAROMA_WM_THEME* LIBAROMA_WM_THEMEP; +struct _LIBAROMA_WM_THEME { LIBAROMA_CANVASP canvas; byte theme_flags; int dpi; @@ -130,12 +128,8 @@ void libaroma_wm_resetsync(); * Return Value: LIBAROMA_MSGP * Descriptions: compose window message */ -LIBAROMA_MSGP libaroma_wm_compose( - LIBAROMA_MSGP msg, - byte m, - voidp data, - int param1, - int param2); +LIBAROMA_MSGP libaroma_wm_compose(LIBAROMA_MSGP msg, byte m, voidp data, + int param1, int param2); /* * Function : libaroma_wm_clean_workspace @@ -163,24 +157,21 @@ byte libaroma_wm_set_workspace(int x, int y, int w, int h); * Return Value: byte * Descriptions: set message handler */ -byte libaroma_wm_set_message_handler( - LIBAROMA_WMCB_MESSAGE_HANDLER callback); +byte libaroma_wm_set_message_handler(LIBAROMA_WMCB_MESSAGE_HANDLER callback); /* * Function : libaroma_wm_set_reset_handler * Return Value: byte * Descriptions: set theme reset handler */ -byte libaroma_wm_set_reset_handler( - LIBAROMA_WMCB_RESET_HANDLER callback); +byte libaroma_wm_set_reset_handler(LIBAROMA_WMCB_RESET_HANDLER callback); /* * Function : libaroma_wm_set_ui_thread * Return Value: byte * Descriptions: set theme reset handler */ -byte libaroma_wm_set_ui_thread( - LIBAROMA_WMCB_UI_THREAD callback); +byte libaroma_wm_set_ui_thread(LIBAROMA_WMCB_UI_THREAD callback); /* * Function : libaroma_wm_sync @@ -216,6 +207,7 @@ byte libaroma_wm_client_stop(); * Descriptions: clear window message */ void libaroma_wm_message_clear(); +void libaroma_wm_message_noclear(byte noclear); /* * Function : libaroma_wm_getmessage @@ -229,63 +221,54 @@ byte libaroma_wm_getmessage(LIBAROMA_MSGP msg); * Return Value: byte * Descriptions: set theme */ -byte libaroma_wm_set_theme( - char * name, - LIBAROMA_CANVASP canvas, - byte theme_flags, - int dpi); +byte libaroma_wm_set_theme(char* name, LIBAROMA_CANVASP canvas, + byte theme_flags, int dpi); /* * Function : libaroma_wm_set_theme_stream * Return Value: byte * Descriptions: set theme from stream */ -byte libaroma_wm_set_theme_stream( - char * name, - LIBAROMA_STREAMP stream, - byte freestream, - int dpi); +byte libaroma_wm_set_theme_stream(char* name, LIBAROMA_STREAMP stream, + byte freestream, int dpi); /* * Function : libaroma_wm_get_theme * Return Value: LIBAROMA_WM_THEMEP * Descriptions: get theme */ -LIBAROMA_WM_THEMEP libaroma_wm_get_theme(char * name); +LIBAROMA_WM_THEMEP libaroma_wm_get_theme(char* name); /* * Function : libaroma_wm_theme_exists * Return Value: byte * Descriptions: is theme exists */ -byte libaroma_wm_theme_exists(char * name); +byte libaroma_wm_theme_exists(char* name); /* * Function : libaroma_wm_draw_themep * Return Value: byte * Descriptions: draw theme struct into canvas */ -byte libaroma_wm_draw_themep( - LIBAROMA_CANVASP dest, LIBAROMA_WM_THEMEP th, - int dx, int dy, int dw, int dh, - LIBAROMA_PNG9_PADP padding); +byte libaroma_wm_draw_themep(LIBAROMA_CANVASP dest, LIBAROMA_WM_THEMEP th, + int dx, int dy, int dw, int dh, + LIBAROMA_PNG9_PADP padding); /* * Function : libaroma_wm_draw_theme * Return Value: byte * Descriptions: draw theme into canvas */ -byte libaroma_wm_draw_theme( - LIBAROMA_CANVASP dest, char * name, - int dx, int dy, int dw, int dh, - LIBAROMA_PNG9_PADP padding); +byte libaroma_wm_draw_theme(LIBAROMA_CANVASP dest, char* name, int dx, int dy, + int dw, int dh, LIBAROMA_PNG9_PADP padding); /* * Function : libaroma_wm_del_theme * Return Value: byte * Descriptions: delete theme item */ -byte libaroma_wm_del_theme(char * name); +byte libaroma_wm_del_theme(char* name); #define libaroma_wm_delete_theme(n) libaroma_wm_del_theme(n) /* @@ -293,21 +276,21 @@ byte libaroma_wm_del_theme(char * name); * Return Value: byte * Descriptions: set colorset */ -byte libaroma_wm_set_color(char * name, word color); +byte libaroma_wm_set_color(char* name, word color); /* * Function : libaroma_wm_get_color * Return Value: word * Descriptions: get colorset */ -word libaroma_wm_get_color(char * name); +word libaroma_wm_get_color(char* name); /* * Function : libaroma_wm_del_color * Return Value: byte * Descriptions: delete color item */ -byte libaroma_wm_del_color(char * name); +byte libaroma_wm_del_color(char* name); #define libaroma_wm_delete_color(n) libaroma_wm_del_color(n) /* @@ -324,4 +307,6 @@ byte libaroma_wm_set_active_window(LIBAROMA_WINDOWP win); */ LIBAROMA_WINDOWP libaroma_wm_get_active_window(); +int libaroma_wm_setdelay(int delay); + #endif /* __libaroma_window_manager_h__ */ diff --git a/libaroma.code-workspace b/libaroma.code-workspace new file mode 100644 index 00000000..a19142ec --- /dev/null +++ b/libaroma.code-workspace @@ -0,0 +1,27 @@ +{ + "folders": [ + { + "path": "." + } + ], + "settings": { + "git.autofetch": true, + "git.autorefresh": true, + "editor.minimap.enabled": true, + "editor.formatOnPaste": true, + "editor.formatOnSave": true, + "editor.formatOnType": true, + "editor.codeActionsOnSave": { + "source.fixAll": true + }, + "clang-format.executable": "clang-format-10", + "clang-format.style": "google", + "clang-format.language.c.enable": true, + "[c]": { + "editor.defaultFormatter": "xaver.clang-format", + "editor.wordBasedSuggestions": false, + "editor.suggest.insertMode": "replace", + "editor.semanticHighlighting.enabled": true + } + } +} \ No newline at end of file diff --git a/libs/freetype/ChangeLog b/libs/freetype/ChangeLog new file mode 100644 index 00000000..31c2ac9e --- /dev/null +++ b/libs/freetype/ChangeLog @@ -0,0 +1,3606 @@ +2015-11-28 Werner Lemberg + + * Version 2.6.2 released. + ========================= + + + Tag sources with `VER-2-6-2'. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.6.2. + + * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj, + builds/windows/vc2005/index.html, + builds/windows/vc2008/freetype.vcproj, + builds/windows/vc2008/index.html, + builds/windows/vc2010/freetype.vcxproj, + builds/windows/vc2010/index.html, + builds/windows/visualc/freetype.dsp, + builds/windows/visualc/freetype.vcproj, + builds/windows/visualc/index.html, + builds/windows/visualce/freetype.dsp, + builds/windows/visualce/freetype.vcproj, + builds/windows/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.6.1/2.6.2/, s/261/262/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2. + + * builds/unix/configure.raw (version_info): Set to 18:2:12. + * CMakeLists.txt (VERSION_PATCH): Set to 2. + + * docs/CHANGES: Updated. + +2015-11-28 Werner Lemberg + + Fix C++ compilation. + + * src/autofit/afloader.c: Include FT_INTERNAL_CALC_H. + + * src/truetype/ttgload.c (load_truetype_glyph): Pacify compiler. + +2015-11-28 Nikolaus Waxweiler + + Change default LCD filter to be normalized and color-balanced. + + * src/base/ftlcdfil.c (FT_Library_SetLcdFilter): Update + `default_filter'. + +2015-11-28 Werner Lemberg + + [docmaker] Allow references to section names. + + In the reference, we show the section's title enclosed in single + quotes. + + * src/tools/docmaker/formatter.py (Formatter::__init__): Collect + section names as identifiers. + + * src/tools/docmaker/tohtml.py (section_title_header): Split into... + (section_title_header1, section_title_header2): ... these two + strings. + (HtmlFormatter::make_block_url, make_html_word, html_source_quote): + Handle sections. + (HtmlFormatter::section_enter): Updated to add `id' HTML attribute. + +2015-11-27 Tamas Kenez + + [cmake] Add script to test the config module. + + * builds/cmake/testbuild.sh: New file. + +2015-11-27 Tamas Kenez + + * CMakeLists.txt: Create `freetype-config.cmake' config module. + +2015-11-27 Tamas Kenez + + * CMakeLists.txt: Set CMAKE_DEBUG_POSTFIX to `d'. + +2015-11-27 Tamas Kenez + + [cmake] Add better control of library dependencies. + + * CMakeLists.txt: Add `WITH_*' variables to force/auto/omit + ZLIB/BZip2/PNG/HarfBuzz. + +2015-11-27 Tamas Kenez + + [cmake] Make `FindHarfbuzz' observe the REQUIRED option. + + * builds/cmake/FindHarfBuzz.cmake: Implement it. + +2015-11-27 Werner Lemberg + + [cmake] Collect files specific to cmake in `builds/cmake'. + + * builds/FindHarfBuzz.cmake: Move to ... + * builds/cmake/FindHarfBuzz.cmake: ... this place. + + * CMakeLists.txt (CMAKE_MODULE_PATH): Updated. + +2015-11-27 Alexander Bock + + CMakeLists.txt: Honour new command line flag `FREETYPE_NO_DIST'. + +2015-11-26 Werner Lemberg + + [docmaker] Allow `foo[bar]' as identifier. + + We need this to handle equally named properties in different + modules. + + * src/tools/docmaker/content.py (re_identifier), + src/tools/docmaker/sources.py (re_crossref): Allow `foo[bar]'. + + * src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_word, + HtmlFormatter::index_exit, HtmlFormatter::section_enter, + HtmlFormatter::block_enter): Handle `foo[bar]'. + +2015-11-25 Werner Lemberg + + * src/bdf/bdflib.c (bdf_load_font): Fix small memory leak (#46480). + + (_bdf_parse_glyphs): Always reset `p->glyph_name' after moving its + contents. + +2015-11-21 Werner Lemberg + + * include/freetype/internal/ftcalc.h: Don't use `register' keyword. + + This fixes compiler warnings. + + Reported by Behdad. + +2015-11-20 Werner Lemberg + + Add `FT_LCD_FILTER_LEGACY1' enum value. + + This does the same as `FT_LCD_FILTER_LEGACY'. + + See + + https://bugs.freedesktop.org/show_bug.cgi?id=92981 + + for the reasoning. + + * include/freetype/ftlcdfil.h (FT_LcdFilter): New value + `FT_LCD_FILTER_LEGACY1'. + + * src/base/ftlcdfil.c (FT_Library_SetLcdFilter): Use it. + +2015-11-15 Werner Lemberg + + * src/autofit/afhints.c (af_get_segment_index): Fix it. + + The old code was too simple, returning invalid values in most cases + where a segment crosses the contour start. + +2015-11-15 Werner Lemberg + + * src/bdf/bdflib.c (bdf_load_font): Fix small memory leak (#46439). + +2015-11-11 Werner Lemberg + + [cff, autofit] Switch off stem darkening by default. + + * src/autofit/afmodule.c (af_autofitter_init), src/cff/cffobjs.c + (cff_driver_init): Do it. + +2015-11-10 Jan Alexander Steffens (heftig) + + Allow native CFF hinter in FT_RENDER_MODE_LIGHT. + + Both the native CFF hinter and the auto-hinter now have a very + similar rendering style. + + * include/freetype/freetype.h: Mention that FT_LOAD_TARGET_LIGHT no + longer implies FT_LOAD_FORCE_AUTOHINT. + + * include/freetype/ftmodapi.h (FT_MODULE_DRIVER_HINTS_LIGHTLY): New + macro. + + * include/freetype/internal/ftobjs.h (FT_DRIVER_HINTS_LIGHTLY): New + macro. + + * src/cff/cffdrivr.c (cff_driver_class): Use it. + + * src/base/ftobjs.c (FT_Load_Glyph): Update auto-hinter selection + logic. + +2015-11-09 Werner Lemberg + + * src/cid/cidload.c (cid_face_open): Fix GDBytes guard (#46408). + +2015-11-09 Werner Lemberg + + [truetype] Remove integer to pointer conversion compiler warning. + + Problem reported by Alexei. + + * src/truetype/ttgload.c (load_truetype_glyph): Use a solution found + in the glib library to fix the issue. + +2015-11-08 Behdad Esfahbod + + [sfnt] Accept version 3 of `EBLC' and `CBLC' tables also. + + * src/sfnt/ttsbit.c (tt_face_load_sbit): Implement it. + +2015-11-08 Philipp Knechtges + + [autofit] Don't distort (latin) glyphs too much (#46195). + + * src/autofit/aflatin.h (AF_LatinBlueRec): Add `ascender' and + `descender' fields. + + * src/autofit/aflatin.c (af_latin_metrics_init_blues): Collect + ascender and descender data for blue zones. + (af_latin_metrics_scale_dim): Reject vertical scaling values that + change the result by more than two pixels. + +2015-11-05 Werner Lemberg + + [sfnt] Ignore embedded bitmaps with zero size (#46379). + + * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Implement + it. + +2015-11-04 Werner Lemberg + + [truetype] Catch infinite recursion in subglyphs (#46372). + + * include/freetype/internal/tttypes.h (TT_LoaderRec): New field + `composites'. + + * src/truetype/ttgload.c: Include FT_LIST_H. + (load_truetype_glyph): Add composite subglyph index to a list; + abort if index is already in list. + (tt_loader_init): Updated. + (tt_loader_done): New function. + (TT_Load_Glyph): Call `tt_loader_done'. + +2015-11-04 Werner Lemberg + + [truetype] Better tracing of composite glyphs. + + * src/truetype/ttgload.c (TT_Load_Composite_Glyph, + load_truetype_glyph): Implement it. + +2015-11-03 Werner Lemberg + + [sfnt] Protect against zero-size bitmaps (#46345). + + * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Check + `glyph_size'. + +2015-11-02 Nikolaus Waxweiler + + * src/autofit/afloader.c (af_loader_load_g): Implement emboldening. + +2015-11-02 Nikolaus Waxweiler + + [autofit] Implement darkening computation function. + + This is a crude adaption of the original `cf2_computeDarkening' + function. + + * src/autofit/afloader.c (af_intToFixed, af_fixedToInt, + af_floatToFixed): New macros, taken from `cf2fixed.h'. + (af_loader_compute_darkening): New function. + * src/autofit/afloader.h: Updated. + +2015-11-02 Nikolaus Waxweiler + + [autofit] Add functions to get standard widths for writing systems. + + We need the computed standard horizontal and vertical widths for the + emboldening calculation. This method provides a convenient way to + extract it from writing-system-specific metrics structures, which + all script definitions must implement. + + * src/autofit/aftypes.h (AF_WritingSystem_GetStdWidthsFunc): New + function type. + (AF_WritingSystemClassRec): New member `style_metrics_getstdw'. + (AF_DEFINE_WRITING_SYSTEM_CLASS): Updated. + + * src/autofit/afcjk.c (af_cjk_get_standard_width): New function. + (af_cjk_writing_system_class): Updated. + * src/autofit/afdummy.c (af_dummy_writing_system_class): Updated. + * src/autofit/afindic.c (af_cjk_get_standard_width): New function. + (af_indic_writing_system_class): Updated. + * src/autofit/aflatin.c (af_latin_get_standard_width): New function. + (af_indic_writing_system_class): Updated. + * src/autofit/aflatin.c (af_latin_get_standard_width): New function. + (af_indic_writing_system_class): Updated. + +2015-11-02 Nikolaus Waxweiler + + [autofit] Extend `AF_FaceGlobalsRec' to hold emboldening data. + + * src/autofit/afglobal.h (AF_FaceGlobalsRec): Add fields. + + * src/autofit/afglobal.c (af_face_globals_new): Initialize new + fields. + (af_face_globals_free): Reset new fields. + +2015-11-02 Nikolaus Waxweiler + + [autofit] Add stem-darkening properties. + + Actual code follows in a later commit. + + * include/freetype/ftautoh.h: Document `no-stem-darkening' and + `darkening-parameters'. + + * src/autofit/afmodule.h: New fields `no_stem_darkening' and + `darken_params'. + + * src/autofit/afmodule.c (af_property_set, af_property_get): + Handle them. + (af_autofitter_init): Initialize them. + +2015-11-02 Bungeman + + [ftfuzzer] Add support for multiple files (patch #8779). + + Currently, libFuzzer only supports mutation of a single file. We + circumvent this problem by using an uncompressed tar archive as + multiple-file input for the fuzzer. + + This patch enables tests of `FT_Attach_Stream' and AFM/PFM parsing; + a constructed tarball should contain a font file as the first + element, and files to be attached as further elements. + + * src/tools/ftfuzzer/ftfuzzer.cc: Include libarchive headers. + (archive_read_entry_data, parse_data): New functions. + (LLVMFuzzerTestOneInput): Updated. + + * src/tools/ftfuzzer/ftmutator.cc: New file, providing a custom + mutator for libFuzzer that can mutate tarballs in a sensible way. + +2015-10-31 Werner Lemberg + + [sfnt] Fix cmap 14 validation (#46346). + + * src/sfnt/ttcmap.c (tt_cmap14_validate): Check limit before + accessing `numRanges' and `numMappings'. + Fix size check for non-default UVS table. + +2015-10-31 Werner Lemberg + + [sfnt] Handle infinite recursion in bitmap strikes (#46344). + + * src/sfnt/ttsbit.c (TT_SBitDecoder_LoadFunc, + tt_sbit_decoder_load_bitmap, tt_sbit_decoder_load_byte_aligned, + tt_sbit_decoder_load_bit_aligned, tt_sbit_decoder_load_png): Add + argument for recursion depth. + (tt_sbit_decoder_load_compound): Add argument for recursion depth. + Increase recursion counter for recursive call. + (tt_sbit_decoder_load_image): Add argument for recursion depth. + Check recurse depth. + (tt_face_load_sbit_image): Updated. + +2015-10-29 Werner Lemberg + + * src/autofit/afhints.c (af_glyph_hints_dump_points): Minor. + +2015-10-29 Werner Lemberg + + * CMakeLists.txt: Remove code to set MSVC's /FD compiler switch. + + Problem reported by David Capello ; see + + http://lists.nongnu.org/archive/html/freetype-devel/2015-10/msg00108.html + + for details. + +2015-10-27 Werner Lemberg + + [pfr] Add some safety guards (#46302). + + * src/pfr/pfrload.h (PFR_CHECK): Rename to... + (PFR_CHECK_SIZE): ... this. + (PFR_SIZE): [!PFR_CONFIG_NO_CHECKS]: Define to PFR_CHECK_SIZE. + + * src/pfr/pfrload.c (pfr_log_font_count): Check `count'. + (pfr_extra_item_load_kerning_pairs): Remove tracing message. + (pfr_phy_font_load): Use PFR_CHECK_SIZE where appropriate. + Allocate `chars' after doing a size checks. + + * src/pfr/pfrsbit.c (pfr_load_bitmap_bits): Move test for invalid + bitmap format to... + (pfr_slot_load_bitmap): ... this function. + Check bitmap size. + +2015-10-26 Werner Lemberg + + [truetype] Fix sanitizing logic for `loca' (#46223). + + * src/truetype/ttpload.c (tt_face_load_loca): A thinko caused an + incorrect adjustment of the number of glyphs, most often using far + too large values. + +2015-10-25 Werner Lemberg + + [autofit] Improve tracing. + + * src/autofit/afhints.c (af_print_idx, af_get_segment_index, + af_get_edge_index): New functions. + + (af_glyph_hints_dump_points): Remove unnecessary `|', `[', and `]'. + Add segment and edge index for each point. + Slightly change printing order of some elements. + Don't print `-1' but `--' for missing elements. + + (af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Remove + unnecessary `|', `[', and `]'. + Don't print `-1' but `--' for missing elements. + +2015-10-24 Werner Lemberg + + [sfnt] Sanitize bitmap strike glyph height. + + Problem reported by Nikolay Sivov . + + * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Avoid zero value + for `metrics->height' by applying some heuristics. + +2015-10-22 Werner Lemberg + + [sfnt, type42] Fix clang compiler warnings. + + * src/sfnt/sfobjs.c (sfnt_init_face): Initialize `offset'. + + * src/type42/t42parse.c (t42_parse_sfnts): Use proper cast. + +2015-10-22 Dave Arnold + Werner Lemberg + + [cff] Avoid overflow/module arithmetic. + + This modifies the addition of subroutine number to subroutine bias + from unsigned to signed, but does not change any results. + + * src/cff/cf2ft.c (cf2_initGlobalRegionBuffer, + cf2_initLocalRegionBuffer): Change variable names from (unsigned) + `idx' to (signed) `subrNum', since it is not an index until after + the bias is added. + * src/cff/cf2ft.h: Updated. + + * src/cff/cf2intrp.c (cf2_interpT2CharString) : + Updated similarly. + +2015-10-22 Werner Lemberg + + [cid] Better check of `SubrCount' dictionary entry (#46272). + + * src/cid/cidload.c (cid_face_open): Add more sanity tests for + `fd_bytes', `gd_bytes', `sd_bytes', and `num_subrs'. + +2015-10-21 Werner Lemberg + + [base] Pacify compiler (#46266). + + * src/base/ftoutln.c (FT_Outline_EmboldenXY): Initialize `in' and + `anchor'. + +2015-10-21 Werner Lemberg + + [type42] Fix heap buffer overflow (#46269). + + * src/type42/t42parse.c (t42_parse_sfnts): Fix off-by-one error in + bounds checking. + +2015-10-21 Dave Arnold + + [cff] Fix limit in assert for max hints. + + * src/cff/cf2interp.c (cf2_hintmask_setAll): Allow mask equal to the + limit (96 bits). + +2015-10-21 Dave Arnold + + [cff] Remove an assert (#46107). + + * src/cff/cf2hints.c (cf2_hintmap_insertHint): Ignore paired edges + in wrong order. + +2015-10-21 Werner Lemberg + + [sfnt] Avoid unnecessarily large allocation for WOFFs (#46257). + + * src/sfnt/sfobjs.c (woff_open_font): Use WOFF's `totalSfntSize' + only after thorough checks. + Add tracing messages. + +2015-10-21 Werner Lemberg + + [type42] Better check invalid `sfnts' array data (#46255). + + * src/type42/t42parse.c (t42_parse_sfnts): Table lengths must be + checked individually against available data size. + +2015-10-20 Werner Lemberg + + [cid] Add a bunch of safety checks. + + * src/cid/cidload.c (parse_fd_array): Check `num_dicts' against + stream size. + (cid_read_subrs): Check largest offset against stream size. + (cid_parse_dict): Move safety check to ... + (cid_face_open): ... this function. + Also test length of binary data and values of `SDBytes', + `SubrMapOffset', `SubrCount', `CIDMapOffset', and `CIDCount'. + +2015-10-20 Werner Lemberg + + [cid] Avoid segfault with malformed input (#46250). + + * src/cid/cidload.c (cid_read_subrs): Return a proper error code for + unsorted offsets. + +2015-10-20 StudioEtrange + + * CMakeLists.txt: Enable shared library builds on MinGW (#46233). + +2015-10-20 Werner Lemberg + + * src/type1/t1afm.c (T1_Read_Metrics): Fix memory leak (#46229). + +2015-10-19 Bungeman + + [cid] Better handle invalid glyph stream offsets (#46221). + + * src/cid/cidgload.c (cid_load_glyph): Check minimum size of glyph + length. + +2015-10-18 Werner Lemberg + + [psaux] Fix tracing of negative numbers. + + Due to incorrect casting negative numbers were shown as very large + (positive) integers on 64bit systems. + + * src/psaux/t1decode.c (t1_decoder_parse_charstrings) : + Use division instead of shift. + +2015-10-18 Werner Lemberg + + [truetype] Improve TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES (#46223). + + * devel/ftoption.h, include/freetype/config/ftoption.h: Surround it + with #ifndef ... #endif, as suggested in the tracker issue. + +2015-10-18 Werner Lemberg + + [truetype] Better protection against malformed `fpgm' (#46223). + + * src/truetype/ttobjs.c (tt_size_init_bytecode): Don't execute a + malformed `fpgm' table more than once. + +2015-10-17 Werner Lemberg + + * src/cid/cidgload.c (cid_load_glyph): Fix memory leak. + + Reported by Kostya Serebryany . + +2015-10-17 Werner Lemberg + + [bdf] Prevent memory leak (#46217). + + * src/bdf/bdflib.c (_bdf_parse_glyphs) : Check + _BDF_GLYPH_BITS. + +2015-10-17 Werner Lemberg + + [bdf] Use stream size to adjust number of glyphs. + + * src/bdf/bdflib.c (ACMSG17): New message macro. + (_bdf_parse_t): Add member `size'. + (bdf_load_font): Set `size'. + (_bdf_parse_glyphs): Adjust `cnt' if necessary. + +2015-10-17 Werner Lemberg + + * src/cid/cidload.c (cid_parse_dict): Check `[FG]DBytes' size. + +2015-10-17 Werner Lemberg + + * src/cid/cidgload.c (cid_glyph_load): Check file offsets (#46222). + +2015-10-17 Werner Lemberg + + [psaux] Fix heap buffer overflow (#46221). + + * src/psaux/t1decode.c (t1_decoder_parse_charstring) : + Fix limit check. + +2015-10-17 Werner Lemberg + + * src/cid/cidload.c (cid_parse_dict): Handle invalid input (#46220). + +2015-10-15 Kostya Serebryany + + [ftfuzzer] Add README. + + * src/tools/ftfuzzer/README: New file. + +2015-10-15 Bungeman + + [bdf] Fix memory leak (#46213). + + * src/bdf/bdflib.c (bdf_load_font): Always go to label `Fail' in + case of error. + +2015-10-15 Werner Lemberg + + [truetype] Add TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES (#46208). + + * devel/ftoption.h, include/freetype/config/ftoption.h + (TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES): New configuration macro. + + * src/truetype/ttinterp.c (MAX_RUNNABLE_OPCODES): Removed. + (TT_RunIns): Updated. + +2015-10-15 Werner Lemberg + + * src/truetype/ttinterp.c (TT_RunIns): Fix bytecode stack tracing. + + The used indices were off by 1. + +2015-10-15 Bungeman + Werner Lemberg + + * src/tools/ftfuzzer/ftfuzzer.cc: Handle fixed sizes (#46211). + +2015-10-15 Werner Lemberg + + [base] Compute MD5 checksums only if explicitly requested. + + This improves profiling accuracy. + + * src/base/ftobjs.c (FT_Render_Glyph_Internal): Implement it. + +2015-10-14 Werner Lemberg + + [base] Use `FT_' namespace for MD5 functions (#42366). + + * src/base/ftobjs.c (MD5_*): Define as `FT_MD5_*'. + Undefine HAVE_OPENSSL. + +2015-10-13 Werner Lemberg + + [type1] Correctly handle missing MM axis names (#46202). + + * src/type1/t1load.c (T1_Get_MM_Var): Implement it. + +2015-10-13 Werner Lemberg + + [pcf] Quickly exit if font index < 0. + + Similar to other font formats, this commit makes the parser no + longer check the whole PCF file but only the header and the TOC if + we just want to get the number of available faces (and a proper + recognition of the font format). + + * src/pcf/pcfdrivr.c (PCF_Face_Init): Updated. + Exit quickly if face_index < 0. + + * src/pcfread.c (pcf_load_font): Add `face_index' argument. + Exit quickly if face_index < 0. + + * src/pcf/pcf.h: Updated. + +2015-10-13 Werner Lemberg + + [ftfuzzer] Handle TTCs and MM/GX variations. + + This patch also contains various other improvements. + + * src/tools/ftfuzzer/ftfuzzer.cc: Add preprocessor guard to reject + pre-C++11 compilers. + (FT_Global): New class. Use it to provide a global constructor and + destructor for the `FT_Library' object. + (setIntermediateAxis): New function to select an (arbitrary) + instance. + (LLVMFuzzerTestOneInput): Loop over all faces and named instances. + Also call `FT_Set_Char_Size'. + +2015-10-13 Werner Lemberg + + [truetype] Refine some GX sanity tests. + + Use the `gvar' table size instead of the remaining bytes in the + stream. + + * src/truetype/ttgxvar.h (GX_BlendRec): New field `gvar_size'. + + * src/truetype/ttgxvar.c (ft_var_load_gvar): Set `gvar_size'. + (ft_var_readpackedpoints, ft_var_readpackeddeltas: New argument + `size'. + (tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Updated. + +2015-10-13 Werner Lemberg + + [truetype] Another GX sanity test. + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Check + `tupleCount'. + Add tracing message. + +2015-10-13 Werner Lemberg + + [truetype] Fix memory leak for broken GX fonts (#46188). + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix scope of + deallocation. + +2015-10-13 Werner Lemberg + + [truetype] Fix commit from 2015-10-10. + + * src/truetype/ttgxvar.c (ft_var_load_gvar): Add missing error + handling body to condition. + +2015-10-12 Werner Lemberg + + [unix] Make MKDIR_P actually work. + + * builds/unix/configure.raw: Fix underquoting of `INSTALL' and + `MKDIR_P'. + + Problem reported by Dan Liddell . + +2015-10-11 Werner Lemberg + + [sfnt] Improve extraction of number of named instances. + + * src/sfnt/sfobjs.c (sfnt_init_face) + [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check number of instances against + `fvar' table size. + +2015-10-10 Alexei Podtelezhnikov + + * src/base/ftoutln.c (FT_Outline_Get_Orientation): Fix overflow + (#46149). + +2015-10-10 Werner Lemberg + + [sfnt] Fix infinite loops with broken cmaps (#46167). + + * src/sfnt/ttcmap.c (tt_cmap8_char_next, tt_cmap12_next): Take care + of border conditions (i.e., if the loops exit naturally). + +2015-10-10 Werner Lemberg + + [truetype] More sanity tests for GX handling. + + These tests should mainly help avoid unnecessarily large memory + allocations in case of malformed fonts. + + * src/truetype/ttgxvar.c (ft_var_readpackedpoints, + ft_var_readpackeddeltas): Check number of points against stream + size. + (ft_var_load_avar): Check `pairCount' against table length. + (ft_var_load_gvar): Check `globalCoordCount' and `glyphCount' + against table length. + (tt_face_vary_cvt): Check `tupleCount' and `offsetToData'. + Fix trace. + (TT_Vary_Apply_Glyph_Deltas): Fix trace. + Free `sharedpoints' to avoid memory leak. + +2015-10-10 Werner Lemberg + + [truetype] Better protection against malformed GX data (#46166). + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Correctly + handle empty `localpoints' array. + +2015-10-10 Werner Lemberg + + * src/pcf/pcfread.c (pcf_read_TOC): Check stream size (#46162). + +2015-10-09 Werner Lemberg + + * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Use real stream size. + +2015-10-08 Werner Lemberg + + [pcf] Protect against invalid number of TOC entries (#46159). + + * src/pcf/pcfread.c (pcf_read_TOC): Check number of TOC entries + against size of data stream. + +2015-10-08 Werner Lemberg + + [type42] Protect against invalid number of glyphs (#46159). + + * src/type42/t42parse.c (t42_parse_charstrings): Check number of + `CharStrings' dictionary entries against size of data stream. + +2015-10-08 Werner Lemberg + + [sfnt] Fix some signed overflows (#46149). + + * src/sfnt/ttsbit.c (tt_face_load_strike_metrics) + : Use `FT_MulDiv'. + +2015-10-08 Werner Lemberg + + [type1] Protect against invalid number of subroutines (#46150). + + * src/type1/t1load.c (parse_subrs): Check number of + `Subrs' dictionary entries against size of data stream. + +2015-10-07 Kostya Serebryany + + [ftfuzzer] Add support for LLVM's LibFuzzer. + + * src/tools/ftfuzzer/ftfuzzer.cc, src/tools/runinput.cc: New files. + +2015-10-06 Alexei Podtelezhnikov + + [smooth] Faster alternative line renderer. + + This implementation renders the entire line segment at once without + subdividing it into scanlines. The main speed improvement comes from + reducing the number of divisions to just two per line segment, which + is a bare minimum to calculate cell coverage in a smooth rasterizer. + Notably, the progression from cell to cell does not itself require any + divisions at all. The speed improvement is more noticeable at larger + sizes. + + * src/smooth/ftgrays.c (gray_render_line): New implementation. + +2015-10-06 Werner Lemberg + + [cff] Return correct PS names from pure CFF (#46130). + + * src/cff/cffdrivr.c (cff_get_ps_name): Use SFNT service only for + SFNT. + +2015-10-04 Werner Lemberg + + [base] Replace left shifts with multiplication (#46118). + + * src/base/ftglyph.c (ft_bitmap_glyph_bbox, FT_Get_Glyph): Do it. + +2015-10-04 Werner Lemberg + + * Version 2.6.1 released. + ========================= + + + Tag sources with `VER-2-6-1'. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.6.1. + + * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj, + builds/windows/vc2005/index.html, + builds/windows/vc2008/freetype.vcproj, + builds/windows/vc2008/index.html, + builds/windows/vc2010/freetype.vcxproj, + builds/windows/vc2010/index.html, + builds/windows/visualc/freetype.dsp, + builds/windows/visualc/freetype.vcproj, + builds/windows/visualc/index.html, + builds/windows/visualce/freetype.dsp, + builds/windows/visualce/freetype.vcproj, + builds/windows/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.6/2.6.1/, s/26/261/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. + + * builds/unix/configure.raw (version_info): Set to 18:1:12. + * CMakeLists.txt (VERSION_PATCH): Set to 1. + + * src/autofit/afmodule.c [AF_DEBUG_AUTOFIT]: Ensure C linking for + dumping functions. + +2015-10-04 Werner Lemberg + + [bzip2, gzip] Avoid access of unitialized memory (#46109). + + * src/bzip2/ftbzip2.c (ft_bzip2_file_fill_input), src/gzip/ftgzip.c + (ft_gzip_file_fill_input): In case of an error, adjust the limit to + avoid copying uninitialized memory. + +2015-10-03 Werner Lemberg + + [bzip2, gzip] Avoid access of unitialized memory (#46109). + + * src/bzip2/ftbzip2.c (ft_bzip2_file_fill_output), src/gzip/ftgzip.c + (ft_gzip_file_fill_output): In case of an error, adjust the limit to + avoid copying uninitialized memory. + +2015-10-01 Alexei Podtelezhnikov + + [smooth] Clean up worker. + + * src/smooth/ftgrays.c (gray_TWorker): Remove never used fields. + +2015-10-01 Werner Lemberg + + [sfnt] Make `tt_cmap4_char_map_linear' more robust (#46078). + + * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Take care of + border conditions (i.e., if the loop exits naturally). + +2015-10-01 Werner Lemberg + + * src/autofit/afranges.c (af_deva_nonbase_uniranges): Fix ranges. + They should be a subset of `af_deva_uniranges'. + +2015-10-01 Werner Lemberg + + [sfnt] Make `tt_cmap4_char_map_linear' faster (#46078). + + * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Use inner loop to + reject too large glyph indices. + +2015-09-30 Alexei Podtelezhnikov + + [smooth] Clean up worker. + + * src/smooth/ftgrays.c (gray_TWorker): Remove lightly used `last_ey'. + (gray_start_cell, gray_render_line): Update. + +2015-09-30 Werner Lemberg + + [autofit] Replace `no-base' with `non-base'. + + * src/autofit/*: Do it. + +2015-09-30 Werner Lemberg + + [sfnt] Rewrite `tt_cmap4_char_map_linear' (#46078). + + * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Add code to better + skip invalid segments. + If searching the next character, provide a more efficient logic to + speed up the code. + +2015-09-30 Werner Lemberg + + [truetype] Adjust number of glyphs for malformed `loca' tables. + + * src/truetype/ttpload.c (tt_face_load_loca): Implement it. + +2015-09-29 Werner Lemberg + + [pshinter] Avoid harmless overflow (#45984). + + * src/pshinter/pshglob.c (psh_blues_set_zones): Fix it. + +2015-09-28 Werner Lemberg + + [autofit] Add support for Lao script. + + Thanks to Danh Hong for guidance with blue zone + characters! + + * src/autofit/afblue.dat: Add blue zone data for Lao. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afscript.h: Add Lao standard characters. + + * src/autofit/afranges.c: Add Lao data. + + * src/autofit/afstyles.h: Add Lao data. + +2015-09-27 suzuki toshiya + + [base] Fix a leak by broken sfnt-PS or resource fork (#46028). + + open_face_from_buffer() frees passed buffer if valid font + is not found. But if copying to the buffer is failed, + the allocated buffer should be freed within the caller. + + * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Free + the buffer `sfnt_ps' if an error caused before calling + open_face_from_buffer(). + (Mac_Read_sfnt_Resource): Free the buffer `sfnt_data' if + an error caused before calling open_face_from_buffer(); + +2015-09-27 suzuki toshiya + + [mac] Fix buffer size calculation for LWFN font. + + * src/base/ftmac.c (read_lwfn): Cast post_size to FT_ULong + to prevent confused copy by too large chunk size. + +2015-09-26 Alexei Podtelezhnikov + + * src/smooth/ftgrays.c (PIXEL_MASK): Remove unused macro. + +2015-09-26 Werner Lemberg + + [autofit] Minor tracing improvement. + + * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Don't emit + blue zones header line if there are no blue zones. + +2015-09-26 Werner Lemberg + + [bzip2, gzip, lzw] Harmonize function signatures with prototype. + + Suggested by Hin-Tak Leung. + + * src/bzip2/ftbzip2.c (ft_bzip2_stream_io), src/gzip/ftgzip.c + (ft_gzip_stream_io), src/lzw/ftlzw.c (ft_lzw_stream_io): Do it. + +2015-09-26 Hin-Tak Leung + + Add new FT_LOAD_COMPUTE_METRICS load flag. + + * include/freetype/freetype.h (FT_LOAD_COMPUTE_METRICS): New macro. + * src/truetype/ttgload.c (compute_glyph_metrics): Usage. + +2015-09-26 Werner Lemberg + + * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Add cast. + +2015-09-25 Werner Lemberg + + [type1] Protect against invalid number of glyphs (#46029). + + * src/type1/t1load.c (parse_charstrings): Check number of + `CharStrings' dictionary entries against size of data stream. + +2015-09-23 Werner Lemberg + + [sfnt] Better checks for invalid cmaps (2/2) (#46019). + + While the current code in `FT_Get_Next_Char' correctly rejects + out-of-bounds glyph indices, it can be extremely slow for malformed + cmaps that use 32bit values. This commit tries to improve that. + + * src/sfnt/ttcmap.c (tt_cmap8_char_next, tt_cmap12_next, + tt_cmap12_char_map_binary, tt_cmap13_next, + tt_cmap13_char_map_binary): Reject glyph indices larger than or + equal to the number of glyphs. + +2015-09-23 Werner Lemberg + + [base, sfnt] Better checks for invalid cmaps (1/2). + + * src/base/ftobjs.c (FT_Get_Char_Index): Don't return out-of-bounds + glyph indices. + (FT_Get_First_Char): Updated. + + * src/sfnt/ttcmap.c (tt_cmap6_char_next): Don't return character + codes greater than 0xFFFF. + + (tt_cmap8_char_index): Avoid integer overflow in computation of + glyph index. + (tt_cmap8_char_next): Avoid integer overflows in computation of + both next character code and glyph index. + + (tt_cmap10_char_index): Fix unsigned integer logic. + (tt_cmap10_char_next): Avoid integer overflow in computation of + next character code. + + (tt_cmap12_next): Avoid integer overflows in computation of both + next character code and glyph index. + (tt_cmap12_char_map_binary): Ditto. + (tt_cmap12_char_next): Simplify. + + (tt_cmap13_char_map_binary): Avoid integer overflow in computation + of next character code. + (tt_cmap13_char_next): Simplify. + +2015-09-21 suzuki toshiya + + [base] Check too long POST and sfnt resource (#45919). + + * src/base/ftbase.h (FT_MAC_RFORK_MAX_LEN): Maximum length of the + resource fork for Mac OS. Resource forks larger than 16 MB can be + written but can't be handled correctly, at least in Carbon routine. + See https://support.microsoft.com/en-us/kb/130437. + + * src/base/ftobjs.c (Mac_Read_POST_Resource): No need to use `0x' + prefix for `%p' formatter. + + * src/base/ftbase.c (Mac_Read_POST_Resource): Check the fragment and + total size of the concatenated POST resource before buffer + allocation. + (Mac_Read_sfnt_Resource): Check the declared size of sfnt resource + before buffer allocation. + + * src/base/ftmac.c (read_lwfn, FT_New_Face_From_SFNT): Check the + total resource size before buffer allocation. + +2015-09-19 Werner Lemberg + + [sfnt] Improve handling of invalid SFNT table entries (#45987). + + This patch fixes weaknesses in function `tt_face_load_font_dir'. + + - It incorrectly assumed that valid tables are always at the + beginning. As a consequence, some valid tables after invalid + entries (which are ignored) were never seen. + + - Duplicate table entries (this is, having the same tag) were not + rejected. + + - The number of valid tables was sometimes too large, leading to + access of invalid tables. + + * src/sfnt/ttload.c (check_table_dir): Add argument to return number + of valid tables. + Add another tracing message. + (tt_face_load_font_dir): Only allocate table array for valid + entries as returned by `check_table_dir'. + Reject duplicate tables and adjust number of valid tables + accordingly. + +2015-09-19 Werner Lemberg + + [pcf] Improve `FT_ABS' fix from 2015-09-17 (#45999). + + * src/pcf/pcfread.c (pcf_load_font): Do first the cast to FT_Short, + then take the absolute value. + Also apply FT_ABS to `height'. + +2015-09-17 Werner Lemberg + + [type42] Fix memory leak (#45989). + + * src/type42/t42parse.c (t42_parse_charstrings): Allow only a single + `CharStrings' array. + +2015-09-17 Werner Lemberg + + [psaux] Fix memory leak (#45986). + + * src/psaux/psobjs.c (ps_parser_load_field) : + Free `temp' in case of error. + +2015-09-17 Werner Lemberg + + [psaux] Improve tracing message. + + * src/psaux/psobjs.c (ps_parser_load_field) : + Handle plural correctly. + +2015-09-17 Werner Lemberg + + [pcf] Fix integer overflows (#45985). + + * src/pcf/pcfread.c (pcf_load_font): Use FT_MulDiv. + +2015-09-17 Werner Lemberg + + [pcf] Use FT_ABS for some property values (#45893). + + * src/pcf/pcfread.c (pcf_load_font): Take absolute values for + AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, RESOLUTION_X, and + RESOLUTION_Y. In tracing mode, add warnings. + +2015-09-16 Werner Lemberg + + Minor fixes for some clang warnings. + + * src/base/ftoutln.c (FT_Outline_EmboldenXY): Cast, possible missing + initialization. + + * src/truetype/ttgload.c (TT_Process_Composite_Component): Cast. + +2015-09-15 Werner Lemberg + + [type1, type42] Fix memory leaks (#45966). + + * src/type1/t1load.c (parse_blend_axis_types): Handle multiple axis + names. + (parse_blend_design_map): Allow only a single design map. + (parse_encoding): Handle multiple encoding vectors. + + * src/type42/t42parse.c (t42_parse_encoding): Handle multiple + encoding vectors. + +2015-09-15 Werner Lemberg + + [truetype] Fix integer type (#45965). + + * src/truetype/ttobjs.c (tt_synth_sfnt_checksum): Implement it. + +2015-09-15 Werner Lemberg + + * src/pcf/pcfread.c (pcf_load_font): Fix integer overflow (#45964). + +2015-09-15 Werner Lemberg + + [type1, type42] Check encoding array size (#45961). + + * src/type1/t1load.c (parse_encoding), src/type42/t42parse.c + (t42_parse_encoding): Do it. + +2015-09-14 Alexei Podtelezhnikov + + * src/base/ftcalc.c (FT_MulFix) [FT_LONG64]: Improve. + +2015-09-14 Werner Lemberg + + [type1] Fix another potential buffer overflow (#45955). + + * src/type1/t1parse (T1_Get_Private_Dict): Assure that check for + `eexec' doesn't exceed `limit'. + +2015-09-13 Werner Lemberg + + Replace `mkinstalldirs' with AC_PROG_MKDIR_P. + + * builds/unix/mkinstalldirs: Removed, no longer needed. + + * builds/unix/configure.raw: Call `AC_PROG_MKDIR_P'. + Update pwd call for `$INSTALL'. + + * builds/unix/unix-def.in (MKINSTALLDIRS): Use `@MKDIR_P@'. + + * autogen.sh: Updated. + +2015-09-13 Werner Lemberg + + [winfonts] Check alignment shift count for resource data (#45938). + + * src/winfonts/winfnt.c (fnt_face_get_dll_font): Implement it. + +2015-09-13 Werner Lemberg + + [type1] Fix potential buffer overflow (#45923). + + * src/type1/t1parse.c (T1_Get_Private_Dict): Assure `cur' doesn't + point to end of file buffer. + +2015-09-13 Werner Lemberg + + [gzip] Fix access of small compressed files (#45937). + + * src/gzip/ftgzip.c (ft_gzip_stream_close): Avoid memory leak. + + (ft_gzip_get_uncompressed_file): Correct byte order while reading + unsigned long value. Without this change, the whole optimization of + accessing small files in `FT_Stream_OpenGzip' is never executed! As + a consequence, access to PCF files in general (which are normally + small files) should be much improved now as originally intended. + +2015-09-11 Werner Lemberg + + [psaux] Fix potential buffer overflow (#45922). + + * src/psaux/psobjs.c (ps_parser_skip_PS_token): If a token is + enclosed in balanced expressions, ensure that the cursor position + doesn't get larger than the current limit. + +2015-09-11 Werner Lemberg + + [base] Avoid crash while tracing `load_mac_face'. + + Reported in Savannah bug #45919. + + * src/base/ftobjs.c (load_mac_face): Honour FT_OPEN_MEMORY while + tracing. + +2015-09-11 Werner Lemberg + + [type42] Fix endless loop (#45920). + + * src/type42/t42parse.c (t42_parse_encoding): Synchronize with + type1's `parse_encoding'. + +2015-09-10 Werner Lemberg + + [docmaker] Allow `-' in bold and italic markup. + + * src/tools/docmaker/sources.py (re_italic, re_bold): Adjust + accordingly. + +2015-09-09 Alexei Podtelezhnikov + + * src/base/ftcalc.c (FT_RoundFix): Improve. + +2015-09-09 Wojciech Mamrak + + * src/base/ftcalc.c (FT_CeilFix, FT_FloorFix): Normalize. + + This commit makes the functions behave as expected, this is, + rounding towards plus or minus infinity. + +2015-09-07 Alexei Podtelezhnikov + + * src/smooth/ftgrays.c (gray_render_line): Simplify clipping. + +2015-09-04 Alexei Podtelezhnikov + + [raster,smooth] Microoptimizations. + + * src/raster/ftraster.c (Insert_Y_Turn, Finalize_Profile_Table, + Beziier_Up, ): Use do-while loops. + + * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line, + gray_convert_glyph): Ditto. + +2015-09-04 Werner Lemberg + + [autofit] Redesign code ranges (2/2). + + This commit adds two fallback scripts (`latb', `latp') and + implements support for the no-base character ranges introduced in + the previous commit. + + * src/autofit/aftypes.h (AF_ScriptClassRec): Add + `script_uni_nobase_ranges' field. + (AF_DEFINE_SCRIPT_CLASS): Updated. + + * src/autofit/afscript.h, src/autofit/afstyles.h: Add `latb' and + `latp' fallback scripts. + + * src/autofit/afblue.dat: Add blue zones for Latin subscript and + superscript fallback scripts. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afglobal.h (AF_NOBASE): New style flag for no-base + characters. + (AF_STYLE_MASK): Updated. + + * src/autofit/afglobal.c (SCRIPT): Updated. + (af_face_globals_compute_style_coverage): Handle new style flag. + + * src/autofit/aflatin.c (af_latin_hints_apply): Handle new style + flag. + + * src/autofit/afranges.h (SCRIPT): Use it to export no-base ranges. + +2015-09-04 Werner Lemberg + + [autofit] Redesign code ranges (1/2). + + This patch introduces auxiliary code ranges that identify no-base + characters; they refer to glyphs of a script that should be hinted + without alignments to blue zones (mostly diacritics). + + It also splits off ranges for fallback scripts that handle subscript + and superscript characters not covered by OpenType features. For + example, this greatly helps improve the hinting of various phonetic + alphabets, which contain a large amount characters that look like + superscript glyphs. + + Finally, code ranges are updated to Unicode 8.0, and enclosed + characters are removed in general since they normally look better if + they stay unhinted. + + * src/autofit/afranges.c (af_latn_uniranges): Updated to Unicode + 8.0. + Split off superscript-like and subscript-like glyphs into... + + (af_latb_uniranges, af_latp_uniranges): ... these two new arrays. + + (af_xxxx_nobase_uniranges): New arrays that hold no-base characters + of the corresponding character ranges. + +2015-09-03 Werner Lemberg + + [autofit] Pass glyph index to hinting function. + + No functionality change yet. + + * src/autofit/aftypes.h (AF_WritingSystem_ApplyHintsFunc): Pass + glyph index. + + * src/autofit/afcjk.c, src/autofit/afcjk.h (af_cjk_hints_apply), + src/autofit/afdummy.c (af_dummy_hints_apply), src/autofit/afindic.c + (af_indic_hints_apply), src/autofit/aflatin.c + (af_latin_hints_apply), src/autofit/aflatin2.c + (af_latin2_hints_apply), src/autofit/afloader.c (af_loader_load_g): + Updated. + +2015-08-30 Werner Lemberg + + [autofit] Code clean-up. + + * src/autofit/afglobal.h (AF_STYLE_MASK): New macro. + (AF_STYLE_UNASSIGNED): Use AF_STYLE_MASK for definition. + + * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): + Updated. + +2015-08-30 Werner Lemberg + + [autofit] Make glyph style array use 16bit values. + + * include/freetype/ftautoh.h (FT_Prop_GlyphToScriptMap): Use + `FT_UShort' for `map' field. + + * src/autofit/afglobal.c (af_face_globals_compute_style_coverage, + af_face_globals_new), src/autofit/hbshim.c, src/autofit/hbshim.h + (af_get_coverage): Use FT_UShort for `glyph_styles' array. + + * src/autofit/afglobal.h (AF_STYLE_UNASSIGNED, AF_DIGIT): Extend to + 16 bits. + (AF_FaceGlobalsRec): Use `FT_UShort' for `glyph_styles' field. + +2015-08-26 Werner Lemberg + + * builds/unix/configure.raw: Need harfbuzz >= 0.9.21 (#45828). + +2015-08-25 Werner Lemberg + + [base] Improve kerning tracing and documentation. + + * src/base/ftobjs.c (FT_Get_Kerning): Emit tracing message if + scaled-down kerning values differ. + +2015-08-18 Werner Lemberg + + [raster] Remove last remnants of `raster5' driver. + + * src/raster/ftrend1.h (ft_raster5_renderer_class): Removed. + + * src/raster/rastpic.c, src/raster/rastpic.h + (ft_raster5_renderer_class_pic_init, + ft_raster5_renderer_class_pic_free): Removed. + +2015-08-17 Alexei Podtelezhnikov + + [base] Improve emboldener (#45596). + + * src/base/ftoutln.c (FT_Outline_EmboldenXY): Correct displacement + of zero-lenght segments. + +2015-08-16 Alexei Podtelezhnikov + + [base] Reoptimize arithmetic. + + * src/base/ftcalc.c (FT_MulDiv, FT_MulFix) [!FT_LONG64]: Remove + special cases that slow down the general use. + +2015-08-15 pazer + + Fix C++ compilation (#45762). + + * src/base/ftstroke.c (ft_outline_glyph_class): Use + FT_CALLBACK_TABLE. + +2015-08-14 Alexei Podtelezhnikov + + [truetype] Clean up. + + * src/truetype/ttgload.c (TT_Process_Composite_Component): Use + `FT_Outline_Transform' and `FT_Outline_Translate'. + (translate_array): Dropped. + +2015-08-14 Andreas Enge + + * builds/unix/detect.mk (CONFIG_SHELL): Don't handle it (#44261). + +2015-08-13 Werner Lemberg + + [truetype] Introduce named instance access to GX fonts. + + For functions querying a face, bits 16-30 of the face index can hold + the named instance index if we have a GX font. The indices start + with value 1; value 0 indicates font access without GX variation + data. + + * include/freetype/freetype.h (FT_FaceRec): Update documentation. + * include/freetype/internal/sfnt.h: Ditto. + + * src/sfnt/sfobjs.c (sfnt_init_face) + [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Get number of named instances and + do argument checks. + (sfnt_load_face): Updated. + + * src/truetype/ttobjs.c (tt_face_init) + [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Use named instance, overwriting + the style name. + + * src/base/ftobjs.c (open_face_from_buffer, + open_face_PS_from_sfnt_stream): Updated. + * src/bdf/bdfdrivr.c (BDF_Face_Init): Updated. + * src/cff/cffload.c (cff_font_load): Updated. + + * src/cff/cffobjs.c (cff_face_init): Make function exit early for + pure CFF fonts if `font_index < 0'. + Updated. + + * src/cid/cidobjs.c (cid_face_init): Updated. + * src/pcf/pcfdrivr.c (PCF_Face_Init): Updated. + * src/pfr/pfrobjs.c (pfr_face_init): Updated. + * src/type1/t1objs.c (T1_Face_Init): Updated. + * src/type42/t42objs.c (T42_Face_Init): Updated. + * src/winfonts/winfnt.c (fnt_face_get_dll_font, FNT_Face_Init): + Updated. + + * docs/CHANGES: Updated. + +2015-08-12 Alexei Podtelezhnikov + + [type1,cff,cid] Streamline font matrix application. + + * src/type1/t1gload.c (T1_Load_Glyph): Directly modify advances only + if font matrix is not trivial. + * src/cff/cffgload.c (cff_slot_load): Ditto. + * sff/cid/cidgload.c (cid_slot_load_glyph): Ditto for advances and the + entire outline. + +2015-08-11 Werner Lemberg + + [builds/unix] Minor. + + * builds/unix/configure.raw: + s/lib{priv,staticconf}/libs{priv,staticconf}/ for orthogonality with + similarly named uppercase variables. + +2015-08-10 Alexei Podtelezhnikov + + [type1,cid,type42] Minor improvements. + + * src/type1/t1load.c (t1_parse_font_matrix): Scale units per EM only + when necessary. Refresh comments. + * src/cid/cidload.c (cid_parse_font_matrix): Ditto. + * src/type42/t42parse.c (t42_parse_font_matrix): Refresh comments. + +2015-08-08 Werner Lemberg + + [type42] Fix glyph access. + + This is a severe bug: We've missed one level of indirection, as + described in the Type 42 specification. As a result, ftview + sometimes showed incorrect glyphs for given glyph names, and even + displayed `error 0x0006' (invalid argument!) in case the number of + glyph indices differed between the Type 42 font and the embedded + TTF. + + Apparently, noone ever noticed it; this shows how much Type 42 fonts + are in use... + + * src/type42/t42objs.c (T42_GlyphSlot_Load): Map Type 42 glyph index + to embedded TTF's glyph index. + +2015-08-08 Werner Lemberg + + [type42] Minor clean-up. + + * src/type42/t42parse.c (t42_parse_font_matrix): Remove unused + variable. + +2015-08-06 Alexei Podtelezhnikov + + [type42] Parse FontMatrix according to specifications. + + * src/type42/t42parse.c (t42_parse_font_matrix): Type 42 FontMatrix + does not need scaling by 1000. Units_per_EM are taken from the + embedded TrueType. + +2015-08-06 Werner Lemberg + + [autofit] Improve Arabic hinting. + + Problem reported by Titus Nemeth (by using + ttfautohint). + + * src/autofit/afblue.dat: Add neutral blue zone for the tatweel + character. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + +2015-08-05 Alexei Podtelezhnikov + + [truetype] Clean up types. + + * src/truetype/ttobjs.c (TT_Size): Move declaration from here. + * include/freetype/internal/tttypes.h (TT_Size): ... to here. + (TT_LoaderRec): Switch to appropriate types for `face' and `size'. + * src/truetype/ttgload.c: Remove corresponding type casts. + * src/truetype/ttsubpix.c: Ditto. + +2015-08-05 Werner Lemberg + + [autofit] Improve recognition of flat vs. rounded segments. + + Lower the flatness threshold from upem/8 to upem/14, making the + auto-hinter accept shorter elements. + + Synchronize flat/round stem selection algorithm with blue zone code. + + * src/autofit/aflatin.c (FLAT_THRESHOLD): New macro. + (af_latin_metrics_init_blues): Use it. + (af_latin_hints_compute_segments): Collect information on maximum + and minimum coordinates of `on' points; use this to add a constraint + for the flat/round decision similar to + `af_latin_metrics_init_blues'. + +2015-08-04 Werner Lemberg + + Another left-shift bug (#45681). + + * src/base/ftobjs.c (IsMacBinary): Only accept positive values for + `dlen'. + +2015-08-03 Alexei Podtelezhnikov + + [base] Fix `ft_corner_orientation'. + + Remove casting from `FT_Long' to `FT_Int' that might change the sign + of the return value and make it faster too. + + * src/base/ftcalc.c (ft_corner_orientation): On 32-bit systems, stay + with 32-bit arithmetic when safe. Use plain math on 64-bit systems. + * src/pshinter/pshalgo.c: Remove old unused code. + +2015-08-03 Werner Lemberg + + * src/truetype/ttgload.c (load_truetype_glyph) + [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Fix crash for composite glyphs + having a depth greater than 1. + +2015-08-03 Werner Lemberg + + Fix typo in clang bug from 2015-07-31 (#45678). + + * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Fix inequality. + +2015-08-02 Werner Lemberg + + * CMakeLists.txt: Improve shared library support. + + Based on a patch from John Cary . + +2015-08-02 Werner Lemberg + + * builds/unix/freetype-config.in (enable_shared): Remove. Unused. + +2015-08-02 Werner Lemberg + + Fix more invalid left-shifts. + + * src/pfr/pfrgload.c (pfr_glyph_load_compound): Use multiplication, + not left-shift. + + * src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar, + tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Use multiplication, + not left-shift. + +2015-07-31 Werner Lemberg + + Fix some bugs found by clang's `-fsanitize=undefined' (#45661). + + * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Only accept + positive values from header. + Check overflow. + + * src/base/ftoutln.c (SCALED): Correctly handle left-shift of + negative values. + + * src/bdf/bdf.h (_bdf_glyph_modified, _bdf_set_glyph_modified, + _bdf_clear_glyph_modified): Use unsigned long constant. + + * src/bdf/bdfdrivr.c (BDF_Size_Select, BDF_Glyph_Load): Don't + left-shift values that can be negative. + + * src/pcf/pcfdrivr.c (PCF_Size_Select, PCF_Glyph_Load): Don't + left-shift values that can be negative. + + * src/raster/ftraster.c (SCALED): Correctly handle left-shift of + negative values. + + * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Don't left-shift + values that can be negative. + + * src/truetype/ttgload.c (TT_Load_Composite_Glyph, + compute_glyph_metrics, load_sbit_image): Don't left-shift values + that can be negative. + +2015-07-31 Werner Lemberg + + Define FT_LONG_MAX. + + * include/freetype/config/ftstdlib.h (FT_LONG_MAX): New macro. + * src/cff/cf2arrst.c (cf2_arrstack_setNumElements): Use it. + +2015-07-28 Alexei Podtelezhnikov + + * src/base/ftcalc.c (FT_Vector_NormLen): Clarify. + +2015-07-27 Alexei Podtelezhnikov + + * src/base/ftcalc.c (FT_Vector_NormLen): Explicate type conversions. + +2015-07-26 Matthias Clasen + + [cff] Don't use `hmtx' table for LSB (#45520). + + * src/cff/cffgload.c (cff_slot_load): Use `htmx' table for advance + width only. Bug introduced 2015-04-10. + +2015-07-09 Werner Lemberg + + Better support of user-supplied C++ namespaces. + + See + + http://lists.nongnu.org/archive/html/freetype-devel/2015-07/msg00008.html + + for a rationale. + + * src/autofit/afpic.h, src/base/basepic.h, src/cff/cffpic.h, + src/pshinter/pshpic.h, src/psnames/pspic.h, src/raster/rastpic.h, + src/sfnt/sfntpic.h, src/smooth/ftspic.h, src/truetype/ttpic.h + (FT_BEGIN_HEADER, FT_END_HEADER): Move macro calls to not enclose + header files that contain FT_{BEGIN,END}_HEADER macros by + themselves. + + * src/autofit/aftypes.h [FT_DEBUG_AUTOFIT]: Include + FT_CONFIG_STANDARD_LIBRARY_H earlier. + + * src/truetype/ttpic.h: Include FT_INTERNL_PIC_H. + +2015-07-07 Werner Lemberg + + [sfnt] Make `tt_face_get_name' member of the SFNT interface. + + * include/freetype/internal/sfnt.h (TT_Get_Name_Func): New + prototype. + (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): New member `get_name'. + + * src/sfnt/sfdriver.c (sfnt_interface): Updated. + + * src/sfnt/sfobjs.c (tt_face_get_name): Tag it with `LOCAL_DEF'. + * src/sfnt/sfobjs.h: Add prototype for it. + +2015-06-30 Werner Lemberg + + Fix some clang compiler warnings. + + * src/base/ftoutln.c (FT_Outline_EmboldenXY), src/cff/cf2intrp.c + (cf2_interpT2CharString), src/truetype/ttgload.c + (load_truetype_glyph), src/truetype/ttgxvar.c (tt_handle_deltas), + src/truetype/ttinterp.c (Ins_INSTCTRL): Fix signedness issues. + +2015-06-29 Alexei Podtelezhnikov + + [truetype] Speed up bytecode interpreter. + + * src/truetype/ttinterp.c (Normalize): Use `FT_Vector_NormLen'. + +2015-06-29 Alexei Podtelezhnikov + + [base] Speed up emboldening. + + * src/base/ftoutln.c (FT_Outline_EmboldenXY): Use + `FT_Vector_NormLen'. + +2015-06-29 Alexei Podtelezhnikov + + [base] Implement fast vector normalization. + + The function uses Newton's iterations instead of dividing vector + components by its length, which needs a square root. This is, + literally, a bit less accurate but a lot faster. + + * src/base/ftcalc.c (FT_Vector_NormLen): New function. + +2015-06-28 Werner Lemberg + + * CMakeLists.txt: Always create `ftconfig.h'. + + For non-UNIX builds, the file stays unmodified. However, it's + better to have the main configuration files at the same place + regardless of the OS. + +2015-06-28 Werner Lemberg + + * CMakeLists.txt: Improve MSVC support (#43737). + +2015-06-28 Werner Lemberg + + [cmake] Check for libraries and create `ftoption.h'. + + * builds/FindHarfBuzz.cmake: New file, taken from + + https://trac.webkit.org/browser/trunk/Source/cmake/FindHarfBuzz.cmake + + * CMakeLists.Txt: Add path to local cmake modules. + Find dependencies for zlib, bzip2, libpng, and harfbuzz. + Create `ftoption.h' file. + Set up include and linker stuff for libraries. + +2015-06-28 Werner Lemberg + + * CMakeLists.txt: Fix creation of `ftconfig.h'. + Check for UNIX header files using `check_include_file'. + Set up correct header include directories. + +2015-06-28 Werner Lemberg + + * CMakeLists.txt: Disallow in-source builds. + +2015-06-27 Werner Lemberg + + * src/tools/docmaker/utils.py (check_output): Add missing `\n'. + +2015-06-26 Werner Lemberg + + * CMakeLists.txt: Select platform-dependent `ftdebug.c'. + +2015-06-25 Werner Lemberg + + * CMakeLists.txt: Use cmake functions for generating `ftconfig.h'. + Additionally, do this for UNIX only. + +2015-06-25 Werner Lemberg + + * CMakeLists.txt (BASE_SRCS): Use `ftbase.c' and `psnames.c'. + +2015-06-25 Werner Lemberg + + Another adjustment to header locations. + + This change is a result of a discussion thread on freetype-devel + + http://lists.nongnu.org/archive/html/freetype-devel/2015-06/msg00041.html + + Re-introduce the `freetype2' subdirectory for all FreeType header + files after installation, and rename the `freetype2' subdirectory in + the git repository to `freetype'. + + * include/freetype2: Renamed to... + * include/freetype: This. + + * CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS, + PRIVATE_HEADERS): Updated. + Update creation of `ftconfig.h'. + Install generated `ftconfig.h'. + + * Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated. + + * builds/amiga/include/config/ftconfig.h, builds/freetype.mk + (PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work), + builds/unix/freetype2.in: Updated. + + * builds/unix/freetype-config.in: Updated. + * builds/unix/configure.raw: Don't check for `rmdir'. + * builds/unix/unix-def.in (DELDIR): Use `rm -rf', which is portable + according to the autoconf info manual. + * builds/unix/install.mk (install, uninstall, + distclean_project_unix): Update and simplify. + + * builds/wince/*, builds/windows/*: Updated. + + * devel/ft2build.h, include/ft2build.h: Updated. + + * include/freetype2/config/ftheader.h, + include/freetype2/internal/ftserv.h, + include/freetype2/internal/internal.h: Update all header file + macros. + + * src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated. + + * docs/*: Updated. + +2015-06-24 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (_bdf_parse_start): Disallow 0 bpp. + +2015-06-24 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (_bdf_parse_start): Simplify bpp parsing. + +2015-06-23 Werner Lemberg + + s/TYPEOF/FT_TYPEOF/ (#45376). + + * builds/unix/ftconfig.in, builds/vms/ftconfig.in, + include/freetype2/config/ftconfig.h, + include/freetype2/internal/ftobjs.h, src/autofit/afwarp.h: Do it. + +2015-06-22 Werner Lemberg + + Fix Savannah bug #45097. + + We no longer `pollute' the namespace of possible header file names; + instead we move `ft2build.h' up by one level so that it gets + installed in the default include directory (e.g., + /usr/local/include). After this commit, only `ft2build.h' stays in + the compiler's include path. + + No visible changes for the user who follows the standard FreeType + header inclusion rules. + + * include/*: Move to ... + * include/freetype2/*: This directory, except `ft2build.h'. + + * CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS, + PRIVATE_HEADERS), Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated. + + * builds/amiga/include/config/ftconfig.h, builds/freetype.mk + (PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work), + builds/unix/install.mk (install, uninstall), + builds/unix/freetype2.in: Updated. + + * builds/unix/freetype-config.in: Updated. + Emit -I directory only if it is not `/usr/include'. + + * builds/wince/*, builds/windows/*: Updated. + + * devel/ft2build.h, include/ft2build.h: Updated. + + * include/freetype2/config/ftheader.h, + include/freetype2/internal/ftserv.h, + include/freetype2/internal/internal.h: Update all header file + macros. + + * src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated. + +2015-06-21 Werner Lemberg + + Make Jam support work again. + + This is just very basic stuff and just a little bit tested on + GNU/Linux only. I won't delve into this since I'm not a Jam user. + + * Jamfile: Call `HDRMACRO' for `ftserv.h' also. + (DEFINES): Replace with... + (CCFLAGS): ... this. + + * src/Jamfile: Don't call `HDRMACRO' for `internal.h'; this is + already handled in the top-level Jamfile. + + * src/autofit/Jamfile (DEFINES): Replace with... + (CCFLAGS): ... this. + (_sources): Add missing files. + + * src/cache/Jamfile: Don't call `HDRMACRO' for `ftcache.h'; it no + longer contains macro header definitions. + + * src/base/Jamfile, src/cff/Jamfile, src/sfnt/Jamfile, + src/truetype/Jamfile (_sources): Add missing files. + +2015-06-16 Werner Lemberg + + Fix Savannah bug #45326. + + * src/sfnt/sfntpic.h (SFNT_SERVICES_GET): Remove duplicate + definitions. + +2015-06-07 Werner Lemberg + + * Version 2.6 released. + ======================= + + + Tag sources with `VER-2-6'. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.6. + + * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj, + builds/windows/vc2005/index.html, + builds/windows/vc2008/freetype.vcproj, + builds/windows/vc2008/index.html, + builds/windows/vc2010/freetype.vcxproj, + builds/windows/vc2010/index.html, + builds/windows/visualc/freetype.dsp, + builds/windows/visualc/freetype.vcproj, + builds/windows/visualc/index.html, + builds/windows/visualce/freetype.dsp, + builds/windows/visualce/freetype.vcproj, + builds/windows/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.5.5/2.6/, s/255/26/. + + * include/freetype/freetype.h (FREETYPE_MINOR): Set to 6. + (FREETYPE_PATCH): Set to 0. + + * builds/unix/configure.raw (version_info): Set to 18:0:12. + * CMakeLists.txt (VERSION_MINOR): Set to 6. + (VERSION_PATCH): Set to 0. + + * src/autofit/afmodule.c [!FT_MAKE_OPTION_SINGLE_OBJECT]: Add + declarations for dumping functions. + + * src/truetype/ttinterp.c (TT_New_Context): Pacify compiler. + + * builds/toplevel.mk: Use `freetype.mk's code to compute the version + string. + Don't include a zero patch level in version string. + * builds/freetype.mk: Remove code for computing the version string. + +2015-06-06 Ashish Azad + + Fix Savannah bug #45260. + + * src/pfr/pfrdrivr.c (pfr_get_kerning): Fix typo. + +2015-06-03 Werner Lemberg + + [truetype] Fix memory leak. + + Problem reported by Grissiom ; in + + http://lists.nongnu.org/archive/html/freetype/2015-05/msg00013.html + + there is an example code to trigger the bug. + + * src/truetype/ttobjs.c (tt_size_init_bytecode): Free old `size' + data before allocating again. Bug most probably introduced four + years ago in version 2.4.3. + +2015-06-02 Werner Lemberg + + [raster] Add more tracing. + + * src/raster/ftraster.c (FT_TRACE7) [_STANDALONE_]: Define. + (Vertical_Sweep_Span, Vertical_Sweep_Drop, Horizontal_Sweep_Span, + Horizontal_Sweep_Drop, Render_Glyph): Add tracing calls. + +2015-06-01 Werner Lemberg + + [truetype] While tracing opcodes, show code position and stack. + + * src/truetype/ttinterp.c: Change all existing TRACE7 calls to + TRACE6. + (opcode_name): Add string lengths. + (TT_RunIns): Implement display of code position and stack. + +2015-05-31 Werner Lemberg + + [truetype] In GX, make private point numbers work correctly. + + This is completely missing in Apple's documentation: If a `gvar' + tuple uses private point numbers (this is, deltas are specified for + some points only), the uncovered points must be interpolated for + this tuple similar to the IUP bytecode instruction. Examples that + need this functionality are glyphs `Oslash' and `Q' in Skia.ttf. + + * src/truetype/ttgxvar.c (tt_delta_shift, tt_delta_interpolate, + tt_handle_deltas): New functions. + (TT_Vary_Get_Glyph_Deltas): Renamed to... + (TT_Vary_Apply_Glyph_Deltas): ... this; it directly processes the + points and does no longer return an array of deltas. + Add tracing information. + Call `tt_handle_deltas' to interpolate missing deltas. + Also fix a minor memory leak in case of error. + + * src/truetype/ttgxvar.h: Updated. + + * src/truetype/ttgload.c (TT_Process_Simple_Glyph, + load_truetype_glyph): Updated. + +2015-05-31 Werner Lemberg + + [truetype] In GX, make intermediate tuplets work at extrema. + + * src/truetype/ttgxvar.c (ft_var_apply_tuple): Fix range condition. + +2015-05-31 Werner Lemberg + + [truetype] Add tracing information to GX code. + + * src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar, + ft_var_apply_tuple, TT_Get_MM_Var, TT_Set_MM_Blend, + TT_Set_Var_Design, tt_face_vary_cvt): Do it. + +2015-05-28 Werner Lemberg + + * src/tools/apinames.c (names_dump): Fix invalid reference. + + Problem reported by Guzman Mosqueda, Jose R + . + +2015-05-24 Werner Lemberg + + [truetype] Fix commit from 2015-05-22. + + * src/truetype/ttgload.c, src/truetype/ttinterp.c: Guard new code + with `TT_CONFIG_OPTION_SUBPIXEL_HINTING'. + + Problem reported by Nikolaus Waxweiler . + +2015-05-23 Werner Lemberg + + [truetype] Fix return values of GETINFO bytecode instruction. + + * src/truetype/ttinterp.h (TT_ExecContextRec): New fields + `vertical_lcd' and `gray_cleartype'. + + * src/truetype/ttgload.c (tt_loader_init): Initialize new fields. + Change `symmetrical smoothing' to TRUE, since FreeType produces + exactly this. + + * src/truetype/ttinterp.c (Ins_GETINFO): Fix selector/return bit + values for symmetrical smoothing, namely 11/18. + Handle bits for vertical LCD subpixels (8/15) and Gray ClearType + (12/19). + +2015-05-23 Werner Lemberg + + [truetype] Minor. + + * src/truetype/ttinterp.h (TT_ExecContext): + s/subpixel/subpixel_hinting. + + * src/truetype/ttgload.c, src/truetype/ttgload.h: Updated. + +2015-05-22 Werner Lemberg + + [truetype] Support selector index 3 of the INSTCTRL instruction. + + This flag activates `native ClearType hinting', disabling backwards + compatibility mode as described in Greg Hitchcocks whitepaper. In + other words, it enables unrestricted functionality of all TrueType + instructions in ClearType. + + * src/truetype/ttgload.c (tt_get_metrics): Call `sph_set_tweaks' + unconditionally. + (tt_loader_init): Unset `ignore_x_mode' flag if bit 2 of + `GS.instruct_control' is active. + + * src/truetype/ttinterp.c (Ins_INSTCTRL): Handle selector index 3. + (Ins_GETINFO): Updated. + + * docs/CHANGES: Document it. + +2015-05-20 Werner Lemberg + + [truetype] Minor. + + * src/truetype/ttinterp.h (SetSuperRound): Fix type of `GridPeriod' + argument. + +2015-05-17 Werner Lemberg + + [truetype] Fix loading of composite glyphs. + + * src/truetype/ttgload.c (TT_Load_Composite_Glyph): If the + ARGS_ARE_XY_VALUES flag is not set, handle argument values as + unsigned. I trust `ttx' (which has exactly such code) that it does + the right thing here... + + The reason that noone has ever noticed this bug is probably the fact + that point-aligned subglyphs are rare, as are subglyphs with a + number of points in the range [128;255], which is quite large (or + even in the range [32768;65535], which is extremely unlikely). + +2015-05-12 Chris Liddell + + [cff] Make the `*curveto' operators more tolerant. + + * src/cff/cf2intrp.c (cf2_interpT2CharString): The opcodes + `vvcurveto', `hhcurveto', `vhcurveto', and `hvcurveto' all iterate, + pulling values off the stack until the stack is exhausted. + Implicitly the stack must be a multiple (or for subtly different + behaviour) a multiple plus a specific number of extra values deep. + If that's not the case, enforce it (as the old code did). + +2015-05-12 Chris Liddell + + [cff] fix incremental interface with new cff code. + + * src/cff/cf2ft.c (cf2_getSeacComponent): When using the incremental + interface to retrieve glyph data for a SEAC, it be left to the + incremental interface callback to apply the encoding to raw + character index (as it was in the previous code). + +2015-04-29 Alexei Podtelezhnikov + + [autofit] Speed up IUP. + + * src/autofit/afhints.c (af_iup_interp): Separate trivial snapping to + the same position from true interpolation, use `scale' to reduce + divisions. + +2015-04-28 Werner Lemberg + + [cff] Use `name' table for PS name if we have a SFNT-CFF. + + This follows the OpenType 1.7 specification. See + + http://tug.org/pipermail/tex-live/2015-April/036634.html + + for a discussion. + + * src/cff/cffdrivr.c (cff_get_ps_name): Use the `sfnt' service if we + have an SFNT. + +2015-04-27 Alexei Podtelezhnikov + + [truetype] Speed up IUP. + + * src/truetype/ttinterp.c (_iup_worker_interpolate): Separate trivial + snapping to the same position from true interpolation. + +2015-04-21 Werner Lemberg + + [autofit] By default, enable warping code but switch off warping. + + Suggested by Behdad. + + * include/config/ftoption.h: Define AF_CONFIG_OPTION_USE_WARPER. + + * src/autofit/afmodule.c (af_autofitter_init): Initialize `warping' + with `false'. + +2015-04-21 Werner Lemberg + + * docs/CHANGES: Updated. + +2015-04-21 Werner Lemberg + + [autofit] Introduce `warping' property. + + This code replaces the debugging hook from the previous commit with + a better, more generic solution. + + * include/ftautoh.h: Document it. + + * src/autofit/afmodule.h (AF_ModuleRec) + [AF_CONFIG_OPTION_USE_WARPER]: Add `warping' field. + + * src/autofit/afmodule.c (_af_debug_disable_warper): Remove. + (af_property_set, af_property_get, af_autofitter_init) + [AF_CONFIG_OPTION_USE_WARPER]: Handle `warping' option. + + * src/autofit/afhints.h (AF_HINTS_DO_WARP): Remove use of the no + longer existing `_af_debug_disable_warper'. + + * src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c + (af_latin_hints_init), src/autofit/aflatin2.c (af_latin2_hints_init) + [AF_CONFIG_OPTION_USE_WARPER]: Add `AF_SCALER_FLAG_NO_WARPER' to the + scaler flags if warping is off. + + * src/autofit/aftypes.h: Updated. + +2015-04-16 Werner Lemberg + + [autofit] Add debugging hook to disable warper. + + * src/autofit/afmodule.c (_af_debug_disable_warper) + [FT_DEBUG_AUTOFIT]: New global variable. + + * src/autofit/aftypes.h: Updated. + (AF_SCALER_FLAG_NO_WARPER): New macro (not actively used yet). + + * src/autofit/afhints.h (AF_HINTS_DO_WARP): New macro. + + * src/autofi/aflatin.c (af_latin_hints_apply) + [AF_CONFIG_OPTION_USE_WARPER]: Use `AF_HINTS_DO_WARP' to control use + of warper. + + * src/autofit/afcjk.c (af_cjk_hints_init, af_cjk_hints_apply) + [AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'. + + * src/autofit/aflatin2.c (af_latin2_hints_apply) + [AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'. + +2015-04-10 Werner Lemberg + + [cff] Update advance width handling to OpenType 1.7. + + Problem reported by Behdad. + + * src/cff/cffdrivr.c (cff_get_advances): Handle SFNT case + separately. + + * src/cff/cffgload.c (cff_slot_load): Use advance width and side + bearing values from `hmtx' table if present. + +2015-04-03 Alexei Podtelezhnikov + + * src/autofit/afhints.c (af_glyph_hints_reload): Use do-while loop. + +2015-04-02 Alexei Podtelezhnikov + + * src/autofit/aflatin.c (af_latin_hint_edges): Reduce logic. + +2015-04-01 Alexei Podtelezhnikov + + [autofit] Finish the thought. + + * src/autofit/afhints.c (af_direction_compute): make sure the long arm + is never negative so that its `FT_ABS' is not necessary. + +2015-04-01 Werner Lemberg + + [autofit] Call dumper functions for tracing. + + * src/autofit/afcjk.c (af_cjk_hints_apply): Remove dead code. + * src/autofit/afhints.c (af_glyph_hints_dump_points): Minor + improvement. + * src/autofit/afmodule.c (af_autofitter_load_glyph): Implement it. + +2015-04-01 Werner Lemberg + + [autofit] Make debugging stuff work again. + + The interface to ftgrid was broken in the series of commits starting + with + + [autofit] Allocate AF_Loader on the stack instead of AF_Module. + + from 2015-01-14. + + * src/autofit/afmodule.c (_af_debug_hints_rec) [FT_DEBUG_AUTOFIT]: + Use a global AF_GlyphHintsRec object for debugging. + (af_autofitter_done, af_autofitter_load_glyph): Updated. + + * src/autofit/afloader.c (af_loader_init, af_loader_done): Updated. + +2015-04-01 Werner Lemberg + + * src/autofit/afhints.c (af_glyph_hints_done): Fix minor thinko. + +2015-03-29 Werner Lemberg + + [cff] Fix Savannah bug #44629. + + * src/cff/cf2font.h (CF2_MAX_SUBR), src/cff/cffgload.h + (CFF_MAX_SUBRS_CALLS): Set to 16. + +2015-03-29 Werner Lemberg + + [type1, truetype] Make the MM API more flexible w.r.t. `num_coords'. + + This commit allows `num_coords' to be larger or smaller than the + number of available axes while selecting a design instance, either + ignoring excess data or using defaults if data is missing. + + * src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design): + Implement it. + + * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design, + T1_Set_Var_Design): Ditto. + +2015-03-29 Werner Lemberg + + [type1] Minor. + + * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design): Use + FT_THROW. + (T1_Set_Var_Design): Use T1_MAX_MM_AXIS and FT_THROW. + +2015-03-27 Werner Lemberg + + [cff] Trace charstring nesting levels. + + * src/cff/cf2intrp.c (cf2_interpT2CharString) : Implement it. + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + : Ditto. + +2015-03-21 Alexei Podtelezhnikov + + [base] Optimize `FT_Angle_Diff'. + + Under normal circumstances we are usually close to the desired range + of angle values, so that the remainder is not really necessary. + + * src/base/fttrigon.c (FT_Angle_Diff): Use loops instead of remainder. + + * src/autofit/aftypes.h (AF_ANGLE_DIFF): Ditto in the unused macro. + +2015-03-21 Werner Lemberg + + [truetype] Improve `gvar' handling. + + * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Correctly handle + single-element runs. Cf. glyph `Q' in Skia.ttf with weights larger + than the default. + +2015-03-20 Alexei Podtelezhnikov + + * src/base/fttrigon.c (FT_Vector_Rotate): Minor refactoring. + +2015-03-17 Alexei Podtelezhnikov + + Fix Savannah bug #44412 (part 2). + + * src/base/fttrigon.c (FT_Sin, FT_Cos, FT_Tan): Call `FT_Vector_Unit'. + +2015-03-11 Werner Lemberg + + [autofit] Add support for Arabic script. + + Thanks to Titus Nemeth for guidance! + + * src/autofit/afblue.dat: Add blue zone data for Arabic. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afscript.h: Add Arabic standard characters. + + * src/autofit/afranges.c: Add Arabic data. + + * src/autofit/afstyles.h: Add Arabic data. + + * docs/CHANGES: Document it. + +2015-03-11 Werner Lemberg + + Rename `svxf86nm.h' to `svfntfmt.h'; update related symbols. + + * include/internal/ftserv.h (FT_SERVICE_XFREE86_NAME_H): Renamed + to... + (FT_SERVICE_FONT_FORMAT_H): This. + + * include/internal/services/svfntfmt.h (FT_XF86_FORMAT_*): Renamed + to ... + (FT_FONT_FORMAT_*): This. + + src/base/ftfntfmt.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c, + src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/pfr/pfrdrivr.c, + src/truetype/ttdriver.c, src/type1/t1driver.c, + src/type42/t42drivr.c, src/winfonts/winfnt.c: Updated. + +2015-03-11 Werner Lemberg + + [base] Rename `FT_XFREE86_H' to `FT_FONT_FORMATS_H'. + + * include/config/ftheader.h: Implement it. + * src/base/ftfntfmt.c, docs/CHANGES: Updated. + +2015-03-11 Werner Lemberg + + [base] Rename `FT_Get_X11_Font_Format' to `FT_Get_Font_Format'. + + * include/ftfntfmt.h, src/base/ftfntfmt.c: Implement it. + + * docs/CHANGES: Updated. + +2015-03-11 Werner Lemberg + + Fix automatic copyright updating. + + * src/tools/update-copyright: Make scanning of `no-copyright' + actually work. + + * src/tools/no-copyright: Don't include README in general. + +2015-03-11 Werner Lemberg + + Rename `ftxf86.[ch]' to `ftfntfmt.[ch]'. + + CMakeLists.txt, builds/amiga/makefile, builds/amiga/makefile.os4, + builds/amiga/smakefile, builds/mac/FreeType.m68k_cfm.make.txt, + builds/mac/FreeType.m68k_far.make.txt, + builds/mac/FreeType.ppc_carbon.make.txt, + builds/mac/FreeType.ppc_classic.make.txt, builds/symbian/bld.inf, + builds/symbian/freetype.mmp, builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2008-ce/freetype.vcproj, + builds/windows/vc2005/freetype.vcproj, + builds/windows/vc2008/freetype.vcproj, + builds/windows/vc2010/freetype.vcxproj, + builds/windows/vc2010/freetype.vcxproj.filters, + builds/windows/visualc/freetype.dsp, + builds/windows/visualc/freetype.vcproj, + builds/windows/visualce/freetype.dsp, + builds/windows/visualce/freetype.vcproj, docs/INSTALL.ANY, + include/config/ftheader.h, include/ftfntfmt.h, modules.cfg, + src/base/ftfntfmt.c, vms_make.com: Updated. + +2015-03-10 Alexei Podtelezhnikov + + Fix Savannah bug #44412 (part 1). + + * src/base/ftstroke.c (ft_stroker_inside): Handle near U-turns. + +2015-03-10 Werner Lemberg + + [base] Rename `FT_Bitmap_New' to `FT_Bitmap_Init'. + + * include/ftbitmap.h, src/base/ftbitmap.c: Implement it. + Update all callers. + + * docs/CHANGES: Updated. + +2015-03-06 Werner Lemberg + + * src/sfnt/ttload.c (tt_face_load_font_dir): Fix compiler warning. + + Found by Alexei. + +2015-03-05 Alexei Podtelezhnikov + + * src/base/ftstroke.c: Simplify. + +2015-03-04 Werner Lemberg + + [truetype] Some fixes and code refactoring in `ttgxvar.c'. + + * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix return value + of `point_cnt' if two bytes are read. + Use a more vertical coding style. + (ft_var_readpackeddeltas): Use FT_UInt for `delta_cnt' parameter. + Use a more vertical coding style. + +2015-03-03 Werner Lemberg + + [autofit] Fix Savannah bug #44241. + + * src/autofit/aflatin.c (af_latin_metrics_init_blues): Reject glyphs + with less than 3 points. + +2015-03-02 Werner Lemberg + + Simplify `TYPEOF' macro. + + No need for two arguments. + + * include/config/ftconfig.h, builds/unix/ftconfig.in, + builds/vms/ftconfig.h (TYPEOF): Updated. + + * include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR), + src/autofit/afwarp.h (AF_WARPER_FLOOR): Updated. + +2015-03-01 Werner Lemberg + + Various compiler warning fixes for `make multi'. + + * src/autofit/afcjk.c (af_cjk_hints_compute_blue_edges), + src/autofit/aflatin.c (af_latin_hint_compute_blue_edges, + af_latin_hint_edges), src/autofit/aflatin2.c + (af_latin2_hints_compute_blue_edges, af_latin2_hint_edges): Declare + as `static'. + + * src/cache/ftccmap.c (FTC_CMAP_QUERY_HASH, FTC_CMAP_NODE_HASH): + Removed. Unused. + * src/cache/ftcimage.c: Include FT_INTERNAL_OBJECTS_H. + * src/cache/ftcmanag.c (FTC_LRU_GET_MANAGER): Removed. Unused. + + * src/cff/cf2intrp.c: Include `cf2intrp.h'. + * src/cff/cffdrivr.c (PAIR_TAG): Removed. Unused. + + * src/gzip/ftgzip.c (NO_DUMMY_DECL): Removed. Unused. + + * src/psaux/afmparse.c (afm_parser_read_int): Declare as `static'. + + * src/pshinter/pshalgo.c (STRONGER, PSH_ZONE_MIN, PSH_ZONE_MAX): + Removed. Unused. + + * src/raster/ftraster.c (Render_Glyph): Declare as `static'. + + * src/sfnt/ttpost.c (load_format_20): Fix signedness warning. + + * src/truetype/ttdriver.c (PAIR_TAG): Removed. Unused. + * src/truetype/ttsubpix.c (is_member_of_family_class, + is_member_of_style_class): Declare as `static'. + + * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Declare + as `static'. + * src/type1/t1load.c (mm_axis_unmap, mm_weights_unmap): Declare as + `static'. + (T1_FIELD_COUNT): Removed. Unused. + * src/type1/t1parse.h (T1_Done_Table): Removed. Unused. + + * src/type42/t42parse.c (T1_Done_Table): Removed. Unused. + +2015-02-25 Werner Lemberg + + [psaux] Signedness fixes. + + * include/internal/psaux.h, src/psaux/afmparse.c, + src/psaux/afmparse.h, src/psaux/psconv.c, src/psaux/psobjs.c, + src/psaux/t1cmap.c, src/psaux/t1decode.c: Apply. + +2015-02-25 Werner Lemberg + + [otvalid] Signedness fixes. + + * src/otvalid/otvcommn.c, src/otvalid/otvgdef.c, + src/otvalid/otvgpos.c, src/otvalid/otvgsub.c, src/otvalid/otvmath.c: + Apply. + +2015-02-25 Werner Lemberg + + * src/bzip2/ftbzip2.c (ft_bzip2_alloc): Signedness fix. + +2015-02-25 Werner Lemberg + + [lzw] Signedness fixes. + + * src/lzw/ftzopen.c, src/lzw/ftzopen.h: Apply. + +2015-02-25 Werner Lemberg + + [gxvalid] Signedness fixes. + + * src/gxvalid/gxvbsln.c, src/gxvalid/gxvcommn.c, + src/gxvalid/gxvcommn.h, src/gxvalid/gxvjust.c, + src/gxvalid/gxvkern.c, src/gxvalid/gxvlcar.c, src/gxvalid/gxvmort.c, + src/gxvalid/gxvmort1.c, src/gxvalid/gxvmort2.c, + src/gxvalid/gxvmorx.c, src/gxvalid/gxvmorx1.c, + src/gxvalid/gxvmorx2.c, src/gxvalid/gxvopbd.c, + src/gxvalid/gxvprop.c, src/gxvalid/gxvtrak.c: Apply. + +2015-02-25 Werner Lemberg + + [cache] Signedness fixes. + + * src/cache/ftcbasic.c, src/cache/ftccmap.c, src/cache/ftcimage.c, + src/cache/ftcmanag.c, src/cache/ftcsbits.c: Apply. + +2015-02-25 Werner Lemberg + + Change dimension fields in `FTC_ImageTypeRec' to unsigned type. + + This doesn't break ABI. + + * include/ftcache.h (FTC_ImageTypeRec): Use unsigned types for + `width' and `height'. + + * docs/CHANGES: Document it. + +2015-02-25 Werner Lemberg + + [cache] Don't use `labs'. + + This is the only place in FreeType where this function was used. + + * include/config/ftstdlib.h (ft_labs): Remove. + + * src/cache/ftcimage.c (ftc_inode_weight): Replace `ft_labs' with + `FT_ABS'. + +2015-02-23 Werner Lemberg + + [cache] Replace `FT_PtrDist' with `FT_Offset'. + + * src/cache/ftccache.h (FTC_NodeRec): `FT_Offset' (a.k.a. `size_t') + is a better choice for `hash' to hold a pointer than `FT_PtrDist' + (a.k.a. `ptrdiff_t'), especially since the latter is signed, + causing zillions of signedness warnings. [Note that `hash' was of + type `FT_UInt32' before the change to `FT_PtrDist'.] + Update all users. + + * src/cache/ftcbasic.c, src/cache/ftccache.c, src/cache/ftccmap.c, + src/cache/ftcglyph.c, src/cache/ftcglyph.h: Updated. + +2015-02-23 Werner Lemberg + + [smooth, raster] Re-enable standalone compilation. + + * src/raster/ftraster.c (FT_RENDER_POOL_SIZE, FT_MAX) + [_STANDALONE_]: Define macros. + + * src/smooth/ftgrays.c (FT_RENDER_POOL_SIZE, FT_MAX, FT_ABS, + FT_HYPOT) [_STANDALONE_]: Define macros. + +2015-02-22 Werner Lemberg + + [smooth] Signedness fixes. + + * src/smooth/ftgrays.c, src/smooth/ftsmooth.c: Apply. + +2015-02-22 Werner Lemberg + + * src/raster/ftraster.c: Use the file's typedefs everywhere. + +2015-02-22 Werner Lemberg + + * src/sfnt/ttpost.c (load_format_20): Fix error tracing message. + + Bug introduced 6 commits earlier. + +2015-02-22 Werner Lemberg + + [pshinter] Fix thinko. + + * src/pshinter/pshalgo.c (psh_glyph_find_strong_points): Correctly + check `count'. + Bug introduced two commits earlier. + +2015-02-22 Werner Lemberg + + [raster] Signedness fixes. + + * src/raster/ftraster.c, src/raster/ftrend1.c: Apply. + +2015-02-22 Werner Lemberg + + [pshinter] Signedness fixes. + + * src/pshinter/pshalgo.c, src/pshinter/pshglob.c, + src/pshinter/pshrec.c: Apply. + +2015-02-22 Werner Lemberg + + [pshinter] Use macros for (unsigned) flags, not enumerations. + + * src/pshinter/pshalgo.h (PSH_Hint_Flags): Replace with macros. + Updated. + * src/pshinter/pshrec.h (PS_Hint_Flags): Replace with macros. + +2015-02-22 Werner Lemberg + + * src/pshinter/pshrec.c: Simplify. + (ps_hints_open, ps_hints_stem): Remove switch statement. + +2015-02-22 Werner Lemberg + + [sfnt] Signedness fixes. + + * src/sfnt/pngshim.c, src/sfnt/sfobjs.c, src/sfnt/ttcmap.c, + src/sfnt/ttkern.c, src/sfnt/ttload.c, src/sfnt/ttpost.c, + src/sfnt/ttsbit.c: Apply. + * src/sfnt/sfdriver.c: Apply. + (sfnt_get_ps_name): Simplify. + +2015-02-22 Werner Lemberg + + [bdf] Signedness fixes. + + * src/bdf/bdf.h, src/bdf/bdfdrivr.c, src/bdf/bdfdrivr.h, + src/bdf/bdflib.c: Apply. + +2015-02-22 Werner Lemberg + + * src/bdf/bdflib.c (_bdf_atous): New function. + (_bdf_parse_glyphs, _bdf_parse_start): Use it. + +2015-02-22 Werner Lemberg + + [pcf] Signedness fixes. + + * src/pcf/pcf.h, src/pcf/pcfdrivr.c: Apply. + * src/pcf/pcfread.c: Apply. + (pcf_get_encodings): Ignore invalid negative encoding offsets. + +2015-02-21 Werner Lemberg + + * src/winfonts/winfnt.c: Signedness fixes. + +2015-02-21 Werner Lemberg + + [type42] Signedness fixes. + + * src/type42/t42parse.c, src/type42/t42parse.h, + src/type42/t42types.h: Apply. + +2015-02-21 Werner Lemberg + + [pfr] Signedness fixes. + + * src/pfr/pfrdrivr.c, src/pfr/pfrgload.c, src/pfr/pfrload.c, + src/pfr/pfrload.h, src/pfr/pfrobjs.c, src/pfr/pfrsbit.c, + src/pfr/pfrtypes.h: Apply. + +2015-02-21 Werner Lemberg + + [cff] Minor signedness fixes related to last commit. + + * src/cff/cf2ft.c, src/cff/cf2intrp.c, src/cff/cffgload.c: Apply. + +2015-02-20 Werner Lemberg + + [cff] Thinkos in bias handling. + + Only the final result is always positive. + + Bug introduced three commits earlier. + + * src/cff/cffgload.c, src/cff/cffgload.h: Apply. + +2015-02-20 Werner Lemberg + + [cid] Fix signedness issues and emit some better error codes. + + * src/cid/cidgload.c, src/cid/cidload.h, src/cid/cidobjs.c, + src/cid/cidparse.h: Apply. + * src/cid/cidload.c: Apply. + (parse_fd_array): Reject negative values for number of dictionaries. + * src/cid/cidparse.c: Apply. + (cid_parser_new): Reject negative values for hex data length. + +2015-02-20 Werner Lemberg + + [cff] Signedness fixes for new engine. + + * src/cff/cf2arrst.c, src/cff/cf2fixed.h, src/cff/cf2ft.c, + src/cff/cf2ft.h, src/cff/cf2hints.c, src/cff/cf2intrp.c: Apply. + +2015-02-20 Werner Lemberg + + [cff] Signedness fixes for basic infrastructure and old engine. + + * include/internal/pshints.h, src/cff/cffdrivr.c, + src/cff/cffgload.c, src/cff/cffgload.h, src/cff/cffload.c, + src/cff/cffobjs.c, src/cff/cffparse.c, src/pshinter/pshrec.c: Apply. + +2015-02-19 Werner Lemberg + + * src/truetype/ttgxvar.c (TT_Get_MM_Var): Ignore `countSizePairs'. + + This is hard-coded to value 2 in `fvar' version 1.0 (and no newer + version exists), but some fonts set it incorrectly. + + Problem reported by Adam Twardoch . + +2015-02-19 Werner Lemberg + + [cff] Emit better error code for invalid private dict size. + + * src/cff/cffparse.c (cff_parse_private_dict): Reject negative + values for size and offset. + +2015-02-19 Werner Lemberg + + [autofit] Fix signedness issues. + + * src/autofit/afangles.c, src/autofit/afcjk.c, + src/autofit/afglobal.c, src/autofit/afhints.c, + src/autofit/aflatin.c, src/autofit/aflatin2.c, src/autofit/afwarp.c, + src/autofit/hbshim.c: Apply. + +2015-02-19 Werner Lemberg + + [autofit] Use macros for (unsigned) flags, not enumerations. + + This harmonizes with other code in FreeType (and reduces the number + of necessary casts to avoid compiler warnings). + + * src/autofit/afblue.hin: Make flag macros unsigned. + * src/autofit/afblue.h: Regenerated. + + * src/autofit/afcjk.h: Replace flag enumeration with macros. + * src/autofit/afcjk.c: Updated. + + * src/autofit/afhints.h (AF_Flags, AF_Edge_Flags): Replace with + macros. + * src/autofit/afhints.c: Updated. + + * src/autofit/aflatin.h: Replace flag enumerations with macros. + * src/autofit/aflatin.c, src/autofit/aflatin2.c: Updated. + + * src/autofit/aftypes.h (AF_ScalerFlags): Replace with macros. + +2015-02-18 Werner Lemberg + + [type1] Fix signedness issues. + + * include/internal/psaux.h, include/internal/t1types.h, + src/psaux/psobjs.c, src/psaux/psobjs.h, src/psaux/t1decode.c, + src/type1/t1gload.c, src/type1/t1load.c, src/type1/t1parse.c: Apply. + +2015-02-18 Werner Lemberg + + [psaux, type1] Fix minor AFM issues. + + * include/internal/t1types.h (AFM_KernPairRec): Make indices + unsigned. + Update users. + (AFM_FontInfoRec): Make element counters unsigned. + Update users. + * src/psaux/afmparse.h (AFM_ValueRec): Add union member for unsigned + int. + + * src/psaux/afmparse.c (afm_parse_track_kern, afm_parse_kern_pairs): + Reject negative values for number of kerning elements. + + * src/type1/t1afm.c, src/tools/test_afm.c: Updated. + +2015-02-18 Werner Lemberg + + Don't use `FT_PtrDist' for lengths. + + Use FT_UInt instead. + + * include/internal/psaux.h (PS_Table_FuncsRec, PS_TableRec, + T1_DecoderRec): Do it. + + * include/internal/t1types.h (T1_FontRec): Ditto. + + * src/cid/cidload.c (cid_parse_dict): Updated. + * src/pfr/pfrload.c (pfr_extra_item_load_font_id): Ditto. + * src/psaux/psobjs.c (ps_table_add), src/psaux/psobjs.h: Ditto. + * src/type1/t1load.c (parse_blend_axis_types, parse_encoding, + parse_chharstrings, parse_dict): Ditto. + * src/type42/t42parse.c (t42_parse_encoding, t42_parse_charstrings, + t42_parse_dict): Ditto. + +2015-02-18 Werner Lemberg + + * src/type1/t1driver.c (t1_ps_get_font_value): Clean up. + This handles negative values better, avoiding many casts. + +2015-02-17 Werner Lemberg + + [base] Fix Savannah bug #44284. + + * src/base/ftcalc.c (FT_MulFix): Typos. + +2015-02-17 Werner Lemberg + + [truetype] Finish compiler warning fixes for signedness issues. + + * src/truetype/ttgxvar.c, src/truetype/ttsubpix.c, + src/truetype/ttsubpix.h: Apply. + +2015-02-17 Werner Lemberg + + * src/truetype/ttsubpix.c: Adding missing `static' keywords. + +2015-02-17 Werner Lemberg + + [truetype] More signedness fixes. + + * include/internal/tttypes.h, src/truetype/ttinterp.h, + src/truetype/ttobjs.h, src/truetype/ttinterp.c, + src/truetype/ttobjs.c: Apply. + +2015-02-17 Werner Lemberg + + [truetype] Various signedness fixes. + + * include/internal/ftgloadr.h, src/truetype/ttpload.c: Apply. + + * src/truetype/ttgload.c: Apply. + (TT_Get_VMetrics): Protect against invalid ascenders and descenders + while constructing advance height. + +2015-02-16 Werner Lemberg + + [base] Finish compiler warning fixes for signedness issues. + + * src/base/ftglyph.c, src/base/ftlcdfil.c, src/base/ftstroke.c: + Apply. + +2015-02-16 Werner Lemberg + + * include/tttables.h (TT_OS2): `fsType' must be FT_UShort. + +2015-02-16 Werner Lemberg + + More minor signedness warning fixes. + + * src/base/ftbbox.c, src/base/ftbitmap.c, src/base/fttrigon.c, + src/base/ftutil.c: Apply. + +2015-02-16 Werner Lemberg + + Next round of minor compiler warning fixes. + + * include/internal/ftrfork.h (FT_RFork_Ref): Change `offset' member + type to `FT_Long'. + (CONST_FT_RFORK_RULE_ARRAY_BEGIN): Add `static' keyword. + + * include/internal/ftstream.h (FT_Stream_Pos): Return `FT_ULong'. + + * src/base/ftoutln.c, src/base/ftrfork.c, src/base/ftstream.c: + Signedess fixes. + +2015-02-16 Werner Lemberg + + Various minor signedness fixes. + + * include/ftadvanc.h, include/internal/ftobjs.h, + src/base/ftgloadr.c, src/base/ftobjs.c: Apply. + +2015-02-16 Werner Lemberg + + New `TYPEOF' macro. + + This helps suppress signedness warnings, avoiding issues with + implicit conversion changes. + + * include/config/ftconfig.h, builds/unix/ftconfig.in, + builds/vms/ftconfig.h (TYPEOF): Define. + + * include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR), + src/autofit/afwarp.h (AF_WARPER_FLOOR): Use it. + +2015-02-16 Werner Lemberg + + * src/base/ftsystem.c: Use casts in standard C function wrappers. + (ft_alloc, ft_realloc, ft_ansi_stream_io, FT_Stream_Open): Do it. + +2015-02-16 Werner Lemberg + + Fix Savannah bug #44261. + + * builds/unix/detect.mk (setup) [unix]: Set `CONFIG_SHELL' in the + environment also while calling the configure script. + +2015-02-16 Werner Lemberg + + * include/internal/ftmemory.h: Add some `FT_Offset' casts. + (FT_MEM_SET, FT_MEM_COPY, FT_MEM_MOVE, FT_ARRAY_ZERO, FT_ARRAY_COPY, + FT_MEM_MOVE): Do it. + +2015-02-15 Werner Lemberg + + [base] Clean up signedness issues in `ftdbgmem.c'. + + Also fix other minor issues. + + * src/base/ftdbgmem.c (FT_MemTableRec): Replace all FT_ULong types + with FT_Long for consistency. + (ft_mem_primes): Change type to `FT_Int'. + (ft_mem_closest_prime, ft_mem_table_set): Updated. + + (ft_mem_debug_panic, ft_mem_debug_alloc, ft_mem_debug_free, + ft_mem_debug_realloc): Use `static' keyword and fix signedness + warnings where necessary. + + (ft_mem_table_resize, ft_mem_table_new, ft_mem_table_destroy, + ft_mem_table_get_nodep, ft_mem_debug_init, FT_DumpMemory): Fix types + and add or remove casts to avoid signedness warnings. + +2015-02-15 Werner Lemberg + + [base] Clean up signedness in arithmetic functions. + + This makes the code more readable and reduces compiler warnings. + + * src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round, FT_MulFix, + FT_DivFix): Convert input parameters to unsigned, do the + computation, then convert the result back to signed. + (ft_corner_orientation): Fix casts. + +2015-02-07 Werner Lemberg + + [sfnt] Fix Savannah bug #44184. + + * src/sfnt/ttload.c (check_table_dir, tt_face_load_font_dir): No + longer reject `htmx' and `vmtx' tables with invalid length but + sanitize them. + +2015-02-06 Jon Anderson + + [truetype] Fix regression in the incremental glyph loader. + + * src/truetype/ttgload.c (load_truetype_glyph): For incremental + fonts, the glyph index may be greater than the number of glyphs + indicated, so guard the check with a preprocessor conditional. + +2015-02-06 Werner Lemberg + + [autofit] Fix potential memory leak. + + While this doesn't show up with FreeType, exactly the same code + leaks with ttfautohint's modified auto-hinter code (which gets used + in a slightly different way). + + It certainly doesn't harm since it is similar to already existing + checks in the code for embedded arrays. + + * src/autofit/afhints.c (af_glyph_hints_reload): Set `max_contours' + and `max_points' for all cases. + +2015-01-31 Werner Lemberg + + [autofit] Add support for Thai script. + + Thanks to Ben Mitchell for guidance with blue + zone characters! + + * src/autofit/afblue.dat: Add blue zone data for Thai. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afscript.h: Add Thai standard characters. + + * src/autofit/afranges.c: Add Thai data. + + * src/autofit/afstyles.h: Add Thai data. + +2015-01-23 Behdad Esfahbod + + [raster] Handle `FT_RASTER_FLAG_AA' correctly. + + This fixes a breakage caused by the commit `[raster] Remove + 5-level gray AA mode from monochrome rasterizer.'. + + Problem reported by Markus Trippelsdorf . + + * src/raster/ftraster.c (ft_black_render): Handle + `FT_RASTER_FLAG_AA'. + + * src/raster/ftrend1.c (ft_raster1_render): Remove gray AA mode + remnants. + +2015-01-18 Werner Lemberg + + * src/base/ftobjs.c (FT_New_Library): Fix compiler warning. + +2015-01-18 Chris Liddell + + [raster] Fix Savannah bug #44022. + + Add fallback for glyphs with degenerate bounding boxes. + + If a glyph has only one very narrow feature, the bbox can end up + with either the width or height of the bbox being 0, in which case + no raster memory is allocated and no attempt is made to render the + glyph. This is less than ideal when the drop-out compensation in + the rendering code would actually result in the glyph being + rendered. + + This problem can be observed with the `I' glyph (gid 47) in the + Autodesk RomanS TrueType font. + + * src/raster/ftrend1.c (ft_raster1_render): Add a fallback if either + dimension is zero to explicitly round up/down (instead of simply + round). + +2015-01-17 Werner Lemberg + + Add some tools to handle yearly copyright notice updates. + + We are now following the GNU guidelines: A new release automatically + means that the copyright year of all affected files gets updated; it + is no longer used to track years of modification changes. + + * src/tools/update-copyright-year: New Perl script. + * src/tools/update-copyright: New shell script that calls + `update-copyright-year' on all files. + * src/tools/no-copyright: Exceptions that should not be handled by + `update-copyright' + +2015-01-14 Werner Lemberg + + * docs/CHANGES: Updated, using a description from Behdad. + +2015-01-14 Behdad Esfahbod + + * src/autofit/afmodule.c (af_autofitter_done): Fix compiler warning. + +2015-01-14 Behdad Esfahbod + + [autofit] Add embedded array of segments and edges. + + Avoids multiple mallocs per typical glyphs. + + With this and recent changes to avoid mallocs, the thread-safe + stack-based loader is now as fast as the previous model that had one + cached singleton. + + * src/autofit/afhints.h (AF_SEGMENTS_EMBEDDED, AF_EDGES_EMBEDDED): + New macros. + (AF_AxisHintsRec): Add two arrays for segments and edges. + + * src/autofit/afhints.c (af_axis_hints_new_segment): Only allocate + data if number of segments exceeds given threshold value. + (af_axis_hints_new_edge): Only allocate data if number of edges + exceeds given threshold value. + (af_glyph_hints_done): Updated. + +2015-01-14 Behdad Esfahbod + + [autofit] Add embedded arrays for points and contours. + + This avoids at least two malloc calls for typical glyphs. + + * src/autofit/afhints.h (AF_POINTS_EMBEDDED, AF_CONTOURS_EMBEDDED): + New macros. + (AF_GlyphHintsRec): Add two arrays for contours and points. + + * src/autofit/afhints.c (af_glyph_hints_init, af_glyph_hints_done): + Updated. + (af_glyph_hints_reload): Only allocate data if number of contours or + points exceeds given threshold values. + +2015-01-14 Behdad Esfahbod + + [autofit] Allocate hints object on the stack. + + This avoids one malloc per load. + + * src/autofit/afloader.h (AF_LoaderRec): Change type of `hints' to + `AF_GlyphHints'. + Update prototype. + + * src/autofit/afloader.c (af_loader_init): Use `AF_GlyphHints' + parameter instead of `FT_Memory'. + (af_loader_done): Directly reset `load_hints'. + (af_loader_load_g): Updated. + + * src/autofit/afmodule.c (af_autofitter_load_glyph): Use local + `hints' object. + +2015-01-14 Behdad Esfahbod + + [autofit] Reuse slot glyph loader. + + No need to create a new glyph loader; we can reuse the one from + `slot->internal->loader'. It's hard to tell why it was written that + way originally, but new code looks sound and correct to me, and + avoids lots of allocations. + + * src/autofit/afloader.c (af_loader_init): Change return type to + `void'. + Don't call `FT_GlyphLoader_New'. + (af_loader_reset): Don't call `FT_GlyphLoader_Rewind'. + (af_loader_load_g): Update code to use `internal->loader', which + doesn't need copying of data. + + * src/autofit/afloader.h (AF_LoaderRec): Remove `gloader' member. + Update prototype. + + * src/autofit/afmodule.c (af_autofitter_load_glyph): Updated. + +2015-01-14 Behdad Esfahbod + + [autofit] Remove (unused) support for composite glyphs. + + We never have to deal with composite glyphs in the autohinter, as + those will be loaded into FORMAT_OUTLINE by the recursed + `FT_Load_Glyph' function. + + In the rare cases that FT_LOAD_NO_RECURSE is set, it will imply + FT_LOAD_NO_SCALE as per `FT_Load_Glyph', which then implies + FT_LOAD_NO_HINTING: + + /* resolve load flags dependencies */ + + if ( load_flags & FT_LOAD_NO_RECURSE ) + load_flags |= FT_LOAD_NO_SCALE | + FT_LOAD_IGNORE_TRANSFORM; + + if ( load_flags & FT_LOAD_NO_SCALE ) + { + load_flags |= FT_LOAD_NO_HINTING | + FT_LOAD_NO_BITMAP; + + load_flags &= ~FT_LOAD_RENDER; + } + + and as such the auto-hinter is never called. Thus, the recursion in + `af_loader_load_g' never actually happens. So remove the depth + counter as well. + + * src/autofit/afloader.c (af_loader_load_g): Remove `depth' + parameter. + : Remove associated code. + (af_loader_load_glyph): Updated. + +2015-01-14 Behdad Esfahbod + + [raster] Fix uninitialized memory access. + + Apparently `ras.cProfile' might be uninitialized. This will be the + case if `ras.top == ras.cProfile->offset', as can be seen in + `End_Profile'. The overshoot code introduced in a change `Fix B/W + rasterization of subglyphs with different drop-out modes.' (from + 2009-06-18) violated this, accessing `ras.cProfile->flags' + unconditionally just before calling `End_Profile' (which then + detected that `cProfile' is uninitialized and didn't touch it). + + This was harmless, and was not detected by valgrind before because + the objects were allocated on the `raster_pool', which was always + initialized. With recent change to allocate raster buffers on the + stack, valgrind now reported this invalid access. + + * src/raster/ftraster.c (Convert_Glyph): Don't access an + uninitialized `cProfile'. + +2015-01-14 Behdad Esfahbod + + [smooth] Fix uninitialized memory access. + + Looks like `ras.span_y' could always be used without initialization. + This was never detected by valgrind before because the library-wide + `raster_pool' was used for the worker object and `raster_pool' was + originally zero'ed. But subsequent reuses of it were using `span_y' + uninitialized. With the recent change to not use `render_pool' and + allocate worker and buffer on the stack, valgrind now detects this + uninitialized access. + + * src/smooth/ftgrays.c (gray_raster_render): Initialize + `ras.span_y'. + +2015-01-14 Behdad Esfahbod + + [base] Don't initialize unused `driver->glyph_loader'. + + * src/base/ftobjs.c (Destroy_Driver): Don't call + `FT_GlyphLoader_Done'. + (FT_Add_Module): Don't call `FT_GlyphLoader_New'. + +2015-01-14 Behdad Esfahbod + + [base] Don't allocate `library->raster_pool' anymore. + + It's unused after the following commits: + + [raster] Allocate render pool for mono rasterizer on the stack. + [raster] Remove 5-level gray AA mode from monochrome rasterizer. + + The value of FT_RENDER_POOL_SIZE still serves the purpose it used to + serve, which is, to adjust the pool size. But the pool is now + allocated on the stack on demand. + + * src/base/ftobjs.c (FT_New_Library, FT_Done_Library): Implement. + +2015-01-14 Behdad Esfahbod + + [base] Do not reorder library->renderers upon use. + + Instead of keeping `library->renderers' in a MRU order, just leave + it as-is. The MRU machinery wasn't thread-safe. + + With this patch, rasterizing glyphs from different faces from + different threads doesn't fail choosing rasterizer + (FT_Err_Cannot_Render_Glyph). + + Easiest to see that crash was to add a `printf' (or otherwise let + thread yield in FT_Throw with debugging enabled). + + * src/base/ftobjs.c (FT_Render_Glyph_Internal), src/base/ftoutln.c + (FT_Outline_Render): Don't call `FT_Set_Renderer'. + +2015-01-14 Behdad Esfahbod + + [raster] Allocate render pool for mono rasterizer on the stack. + + Instead of using the `render_pool' member of `FT_Library' that is + provided down to the rasterizer, completely ignore that and allocate + needed objects on the stack instead. + + With this patch, rasterizing glyphs from different faces from + different threads doesn't crash in the monochrome rasterizer. + + * src/raster/ftraster.c (black_TRaster): Remove `buffer', + `buffer_size', and `worker' members. + + (ft_black_render): Create `buffer' locally. + (ft_black_reset): Updated. + +2015-01-14 Behdad Esfahbod + + [raster] Remove 5-level gray AA mode from monochrome rasterizer. + + It was off by default and couldn't be turned on at runtime. And the + smooth rasterizer superceded it over ten years ago. No point in + keeping. Comments suggested that it was there for compatibility + with FreeType 1. + + 550 lines down. + + * src/raster/ftraster.c (FT_RASTER_OPTION_ANTI_ALIASING, + RASTER_GRAY_LINES): Remove macros and all associated code. + + (black_TWorker): Remove `gray_min_x' and `gray_max_x'. + (black_TRaster): Remove `grays' and `gray_width'. + + (Vertical_Sweep_Init, Vertical_Sweep_Span, Vertical_Sweep_Drop, + ft_black_render): Updated. + + * src/raster/ftrend1.c (ft_raster1_render): Simplify code. + (ft_raster5_renderer_class): Removed. + +2015-01-14 Behdad Esfahbod + + [smooth] Allocate render pool for smooth rasterizer on the stack. + + Instead of using the `render_pool' member of `FT_Library' that is + provided down to the rasterizer, completely ignore that and allocate + needed objects on the stack instead. + + With this patch, rasterizing glyphs from different faces from + different threads doesn't crash in the smooth rasterizer. + + Bugs: + + https://bugzilla.redhat.com/show_bug.cgi?id=678397 + https://bugzilla.redhat.com/show_bug.cgi?id=1004315 + https://bugzilla.redhat.com/show_bug.cgi?id=1165471 + https://bugs.freedesktop.org/show_bug.cgi?id=69034 + + * src/smooth/ftgrays.c (gray_TRaster): Remove `buffer', + `buffer_size', `band_size', and `worker' members. + + (gray_raster_render): Create `buffer', `buffer_size', and + `band_size' locally. + (gray_raster_reset): Updated. + +2015-01-14 Behdad Esfahbod + + [truetype] Allocate TT_ExecContext in TT_Size instead of TT_Driver. + + Previously the code had stipulation for using a per-TT_Size exec + context if `size->debug' was true. But there was no way that + `size->debug' could *ever* be true. As such, the code was always + using the singleton `TT_ExecContext' that was stored in `TT_Driver'. + This was, clearly, not threadsafe. + + With this patch, loading glyphs from different faces from different + threads doesn't crash in the bytecode loader code. + + * src/truetype/ttobjs.h (TT_SizeRec): Remove `debug' member. + (TT_DriverRec): Remove `context' member. + + * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Remove + `TT_ExecContext' code related to a global `TT_Driver' object. + + (tt_driver_done): Don't remove `TT_ExecContext' object here but ... + (tt_size_done_bytecode): ... here. + + (tt_driver_init): Don't create `TT_ExecContext' object here but ... + (tt_size_init_bytecode): ... here, only on demand. + + * src/truetype/ttinterp.c (TT_Run_Context): Remove defunct debug + code. + (TT_New_Context): Remove `TT_ExecContext' code related to a global + `TT_Driver' object. + + * src/truetype/ttinterp.h: Updated. + + * src/truetype/ttgload.c (TT_Hint_Glyph, tt_loader_init): Updated. + +2015-01-14 Behdad Esfahbod + + [autofit] Allocate AF_Loader on the stack instead of AF_Module. + + Stop sharing a global `AF_Loader'. Allocate one on the stack during + glyph load. + + Right now this results in about 25% slowdown, to be fixed in a + following commit. + + With this patch loading glyphs from different faces from different + threads doesn't immediately crash in the autohinting loader code. + + Bugs: + + https://bugzilla.redhat.com/show_bug.cgi?id=1164941 + + * src/autofit/afloader.c (af_loader_init): Pass + `AF_Loader' and `FT_Memory' instead of `AF_Module' as arguments. + (af_loader_reset, af_loader_load_glyph): Also pass `loader' as + argument. + (af_loader_done): Use `AF_Loader' instead of `AF_Module' as + argument. + + * src/autofit/afmodule.c (af_autofitter_init): Don't call + `af_loader_init'. + (af_autofitter_done): Don't call `af_loader_done'. + (af_autofitter_load_glyph): Use a local `AF_Loader' object. + + * src/autofit/afloader.h: Include `afmodule.h'. + Update prototypes. + Move typedef for `AF_Module' to... + + * src/autofit/afmodule.h: ... this place. + No longer include `afloader.h'. + +2015-01-14 Behdad Esfahbod + + * src/type42/t42objs.h (T42_DriverRec): Remove unused member. + +2015-01-12 Werner Lemberg + + Fix Savannah bug #43976. + + Assure that FreeType's internal include directories are found before + `CPPFLAGS' (which might be set by the user in the environment), and + `CPPFLAGS' before `CFLAGS'. + + * builds/freetype.mk (FT_CFLAGS): Don't add `INCLUDE_FLAGS'. + (FT_COMPILE): Make this a special variable for compiling only the + files handled in `freetype.mk'. + (.c.$O): Removed, unused. + + * src/*/rules.mk (*_COMPILE): Fix order of include directories. + +2015-01-11 Werner Lemberg + + [truetype] Prettyfing. + + * src/truetype/ttinterp.c (project, dualproj, fast_project, + fast_dualproj): Rename to... + (PROJECT, DUALPROJ, FAST_PROJECT, FAST_DUALPROJ): ... this. + +2015-01-11 Werner Lemberg + + * src/truetype/ttinterp.c (Ins_JROT, Ins_JROF): Simplify. + + Based on a patch from Behdad. + +2015-01-11 Werner Lemberg + + * src/truetype/ttinterp.c (Ins_SxVTL): Simplify function call. + +2015-01-11 Werner Lemberg + + * src/truetype/ttinterp.c (Normalize): Remove unused argument. + +2015-01-11 Werner Lemberg + + [truetype] More macro expansions. + + * src/truetype/ttinterp.c (FT_UNUSED_EXEC): Remove macro by + expansion. + +2015-01-11 Werner Lemberg + + [truetype] More macro expansions. + + * src/truetype/ttinterp.c (INS_ARG): Remove macro by expansion, + adjusting funtion calls where necessary. + (FT_UNUSED_ARG): Removed, no longer needed. + +2015-01-10 Werner Lemberg + + [truetype] More macro expansions. + + Based on a patch from Behdad. + + * src/truetype/ttinterp.c (DO_*): Expand macros into corresponding + `Ins_*' functions. + (TT_RunIns): Replace `DO_*' macros with `Ins_*' function calls. + (ARRAY_BOUND_ERROR): Remove second definition, which is no longer + needed. + (Ins_SVTCA, Ins_SPVTCA, Ins_SFVTCA): Replaced with... + (Ins_SxyTCA): New function. + +2015-01-10 Werner Lemberg + + [truetype] Remove TT_CONFIG_OPTION_INTERPRETER_SWITCH. + + Behdad suggested this code simplification, and nobody objected... + + * include/config/ftoption.h, devel/ftoption.h + (TT_CONFIG_OPTION_INTERPRETER_SWITCH): Remove. + + * src/truetype/ttinterp.c [TT_CONFIG_OPTION_INTERPRETER_SWITCH]: + Remove related code. + (ARRAY_BOUND_ERROR): Use do-while loop. + +2015-01-10 Werner Lemberg + + [truetype] More macro expansions. + + * src/truetype/ttinterp.c, src/truetype/ttinterp.h (EXEC_ARG_, + EXEC_ARG): Remove by replacing with expansion. + +2015-01-10 Werner Lemberg + + [truetype] More macro expansions. + + Based on a patch from Behdad. + + * src/truetype/ttinterp.c (SKIP_Code, GET_ShortIns, NORMalize, + SET_SuperRound, ROUND_None, INS_Goto_CodeRange, CUR_Func_move, + CUR_Func_move_orig, CUR_Func_round, CUR_Func_cur_ppem, + CUR_Func_read_cvt, CUR_Func_write_cvt, CUR_Func_move_cvt, + CURRENT_Ratio, INS_SxVTL, COMPUTE_Funcs, COMPUTE_Round, + COMPUTE_Point_Displacement, MOVE_Zp2_Point): Remove by replacing + with expansion. + + (Cur_Func_project, CUR_Func_dualproj, CUR_fast_project, + CUR_fast_dualproj): Replace with macros `project', `dualproj', + `fast_project', `fast_dualproj'. + +2015-01-10 Werner Lemberg + + [truetype] More macro expansions. + + * src/truetype/ttinterp.c (EXEC_OP_, EXEC_OP): Remove by replacing + with expansion. + +2015-01-10 Werner Lemberg + + [truetype] Remove code for static TrueType interpreter. + + This is a follow-up patch. + + * src/truetype/ttinterp.c, src/truetype/ttinterp.h + [TT_CONFIG_OPTION_STATIC_INTERPRETER, + TT_CONFIG_OPTION_STATIC_RASTER]: Remove macros and related code. + +2015-01-10 Werner Lemberg + + * src/truetype/ttinterp.c (CUR): Remove by replacing with expansion. + + This starts a series of patches that simplifies the code of the + bytecode interpreter. + + +---------------------------------------------------------------------------- + +Copyright 2015 by +David Turner, Robert Wilhelm, and Werner Lemberg. + +This file is part of the FreeType project, and may only be used, modified, +and distributed under the terms of the FreeType project license, +LICENSE.TXT. By continuing to use, modify, or distribute this file you +indicate that you have read the license and understand and accept it +fully. + + +Local Variables: +version-control: never +coding: utf-8 +End: diff --git a/libs/freetype/ChangeLog.20 b/libs/freetype/ChangeLog.20 new file mode 100644 index 00000000..6dae58ea --- /dev/null +++ b/libs/freetype/ChangeLog.20 @@ -0,0 +1,2613 @@ +2002-02-09 Werner Lemberg + + * README: Fix typo. + * docs/CHANGES: Minor fixes. + + + * Version 2.0.8 released. + ========================= + + +2002-02-08 David Turner + + * docs/CHANGES: Updating for 2.0.8. + + * include/freetype/freetype.h: Setting `PATCH_LEVEL' to 8 and + removing `FT_Get_Next_Char' from the API (temporarily). + + * include/freetype/freetype.h: Adding comments to FT_Get_Next_Char; + note that this function might temporarily be removed for the 2.0.8 + release. + +2002-02-07 David Turner + + * src/pcf/pcfread.c (pcf_load_font): Removed immature support of + the AVERAGE_WIDTH property. + +2002-02-06 David Turner + + * src/sfnt/sfobjs.c (SFNT_Load_Face): Since many fonts embedded in + PDF documents do not include 'cmap', 'post' and 'name' tables, the + SFNT face loader has been changed to not immediately report an + error if these are not present. + + Note that the specification _requires_ these tables, but Adobe + seems to ignore it completely. + + * src/sfnt/ttcmap.c: Removing compiler warnings. + + * src/pcf/pcfread.c (pcf_read_TOC): Use FT_UInt. + (pcf_parse_metric, pcf_parse_compressed_metric): Removed. Code + is now in ... + (pcf_get_metric): Here. + (pcfSeekToType): Renamed to ... + (pcf_seek_to_table_type): This. + Use FT_Int. + (pcfHasType): Renamed to ... + (pcf_has_table_type): This. + Use FT_Int. + (find_property): Renamed to ... + (pcf_find_property): This. + Use FT_Int. + (pcf_get_bitmaps, pcf_get_encodings): Handle invalid PCF fonts + better (delaying format checks out of FT_Access_Frame .. + FT_Forget_Frame blocks to avoid leaving the stream in an incorrect + state when encountering an invalid PCF font). + + * src/pcf/pcfdriver.c (PCF_Done_Face): Renamed to ... + (PCF_Face_Done): This. + (PCF_Init_Face): Renamed to ... + (PCF_Face_Init): This. + (PCF_Get_Char_Index): Renamed to ... + (PCF_Char_Get_Index): This. + (PCF_Get_Next_Char): Renamed to ... + (PCF_Char_Get_Next): This. + (pcf_driver_class): Updated. + + * src/pcf/pcf.h (PCF_Done_Face): Removed. + +2002-02-06 Detlef Würkner + + * src/pcf/pcfdriver.c (FT_Done_Face): Fixed small memory leak. + + * src/pcf/pcfread.c (pcf_load_font): Now handles the `AVERAGE_WIDTH' + property to return correct character pixel (width/height) pairs for + embedded bitmaps. + +2002-02-04 Keith Packard + + Adding the function `FT_Get_Next_Char', doing the obvious thing + w.r.t. the selected charmap. + + * include/freetype/freetype.h: Add prototype. + * include/freetype/internal/ftdriver.h: Add `FTDriver_getNextChar' + typedef. + (FT_Driver_Class): Use it. + * include/freetype/internal/psnames.h: Add `PS_Next_Unicode_Func' + typedef. + (PSNames_Interface): Use it. + * include/freetype/internal/tttypes.h: Add `TT_CharNext_Func' + typedef. + (TT_CMapTable): Use it. + + * src/base/ftobjs.c (FT_Get_Next_Char): New function, implementing + high-level API. + * src/cff/cffdrivr.c (cff_get_next_char): New function. + (cff_driver_class): Add it. + * src/cid/cidriver.c (Cid_Get_Next_Char): New function. + (t1cid_driver_class): Add it. + * src/pcf/pcfdriver.c (PCF_Get_Next_Char): New function. + (pcf_driver_class): Add it. + * src/psnames/psmodule.c (PS_Next_Unicode): New function. + (psnames_interface): Add it. + * src/sfnt/ttcmap.c (code_to_next0, code_to_next2, code_to_next4, + code_to_next6, code_to_next_8_12, code_to_next_10): New auxiliary + functions. + (TT_CharMap_Load): Use them. + * src/truetype/ttdriver.c (Get_Next_Char): New function. + (tt_driver_class): Add it. + * src/type1/t1driver.c (Get_Next_Char): New function. + (t1_driver_class): Add it. + * src/winfonts/winfnt.c (FNT_Get_Next_Char): New function. + (winfnt_driver_class): Add it. + + * src/pcf/pcfread.c (pcf_load_font): For now, report Unicode for + Unicode and Latin 1 encodings. + +2002-02-02 Keith Packard + + * builds/unix/freetype-config.in: Add missing `fi'. + + + * Version 2.0.7 released. + ========================= + + +2002-02-01 David Turner + + * include/freetype/freetype.h: Increasing FREETYPE_PATCH to 7 + for the new release. + +2002-01-31 David Turner + + * README, README.UNX, docs/CHANGES: Updating documentation for the + 2.0.7 release. + +2002-01-30 David Turner + + * INSTALL: Moved to ... + * docs/INSTALL: Here to avoid conflicts with the `install' script on + Windows, where the filesystem doesn't preserve case. + +2002-01-29 David Turner + + * configure: Fixed the script. It previously didn't accept more + than one argument correctly. For example, when typing: + + ./configure --disable-shared --disable-nls + + the `--disable-nls' was incorrectly sent to the `make' program. + +2002-01-29 Werner Lemberg + + * README.UNX: Fix typo. + * builds/unix/install.mk (uninstall): Fix library name for libtool. + +2002-01-28 Francesco Zappa Nardelli + + * src/pcf/pcfdriver.c (PCF_Done_Face): Fix incorrect destruction of + the face object (face->toc.tables, face->root.family_name, + face->root.available_size, face->charset_encoding, + face->charset_registry are now freed). Thanks to Niels Moseley. + +2002-01-28 Roberto Alameda + + * src/type1/t1load.c (parse_encoding): Set `loader->num_chars'. + +2002-01-28 Werner Lemberg + + * src/type1/t1load.c (parse_subrs, parse_charstrings): Use copy + of `base' string for decrypting to not modify the original data. + Based on a patch by Jakub Bogusz . + +2002-01-27 Giuliano Pochini + + * src/smooth/ftgrays.c (gray_render_scanline): Fix bug which caused + bad rendering of thin lines (less than one pixel thick). + +2002-01-25 Werner Lemberg + + * src/cff/cffdrivr.c (cff_get_name_index): Make last patch work + actually. + +2002-01-25 Martin Zinser + + * src/cache/ftccache.c (ftc_node_done, ftc_node_destroy): Fix + compilation warnings. + * src/base/descrip.mms (OBJS): Add `ftmm.obj'. + * src/cache/descrip.mms (ftcache.obj): Dependencies added. + +2002-01-25 WANG Yi + + * src/cff/cffdrivr.c (cff_get_name_index): Fix deallocation bug. + +2002-01-21 Antoine Leca + + * docs/PATENTS: Typo fixed (thanks to Detlef `Hawkeye' Würkner) in + the URL for the online resource. + +2002-01-18 Ian Brown + + * builds/win32/ftdebug.c: New file. + * builds/win32/visualc/freetype.dsp: Updated. + +2002-01-18 Detlef Würkner + + * builds/amiga/src/base/ftsystem.c: Updated for AmigaOS 3.9. + * builds/amiga/README: Updated. + +2002-01-18 Ian Brown + + * builds/win32/visualc/freetype.dsp: Updated. + +2002-01-13 Werner Lemberg + + * builds/unix/freetype2.a4: The script was still buggy. + * builds/unix/freetype-config.in: Make it really work for any install + prefix. + +2002-01-10 Werner Lemberg + + * builds/unix/freetype2.a4: Fix some serious bugs. + +2002-01-09 David Turner + + * builds/unix/configure.ac: Build top-level Jamfile. + +2002-01-09 Maxim Shemanarev + + * src/smooth/ftgrays.c (gray_render_line): Small optimization to + the smooth anti-aliased renderer that deals with vertical segments. + This results in a 5-7% speedup in rendering speed. + +2002-01-08 David Turner + + Added some wrapper scripts to make the installation more + Unix-friendly. + + * configure, install: New files. + + * INSTALL, README.UNX: Updated installation documentation to use the + new 'configure' and 'install' scripts. + +2002-01-07 David Turner + + + * Version 2.0.6 released. + ========================= + + + * docs/BUGS, docs/CHANGES: Updating documentation for 2.0.6 release. + + * src/tools/docmaker.py: Fixed HTML quoting in sources. + (html_format): Replaced with ... + (html_quote): New function. + (html_quote0): New function. + (DocCode::dump_html): Small improvement. + (DocParagraph::dump, DocBlock::html): Use html_quote0 and html_quote. + + * include/freetype/config/ftoption.h: Setting default options for + a release build (debugging off, bytecode interpreter off). + + * src/base/ftobjs.c, src/base/ftoutln.c, src/cache/ftccmap.c, + src/cff/cffload.c, src/cff/cffobjs.c, src/pshinter/pshalgo2.c, + src/sfnt/ttload.c, src/sfnt/ttsbit.c: Removing small compiler + warnings (in pedantic compilation modes). + +2002-01-05 David Turner + + * src/autohint/ahhint.c (ah_align_linked_edge): Modified computation + of auto-hinted stem widths; this avoids color fringes in + `ClearType-like' rendering. + + * src/truetype/ttgload.c (TT_Load_Glyph_Header, + TT_Load_Simple_Glyph, TT_Load_Composite_Glyph, load_truetype_glyph): + Modified the TrueType loader to make it more paranoid; this avoids + nasty buffer overflows in the case of invalid glyph data (as + encountered in the output of some buggy font converters). + +2002-01-04 David Turner + + * README.UNX: Added special README file for Unix users. + + * builds/unix/ftsystem.c (FT_New_Stream): Fixed typo. + + * src/base/ftobjs.c: Added #include FT_OUTLINE_H to get rid + of compiler warnings. + + * src/base/ftoutln.c (FT_Outline_Check): Remove compiler warning. + +2002-01-03 Werner Lemberg + + * src/type1/t1objs.c (T1_Face_Init): Add cast to avoid compiler + warning. + +2002-01-03 Keith Packard + + * builds/unix/ftsystem.c (FT_New_Stream): Added a fix to ensure that + all FreeType input streams are closed in child processes of a `fork' + on Unix systems. This is important to avoid (potential) access + control issues. + +2002-01-03 David Turner + + * src/type1/t1objs.c (T1_Face_Init): Fixed a bug that crashed the + library when dealing with certain weird fonts like `Stalingrad', in + `sadn.pfb' (this font has no full font name entry). + + * src/base/ftoutln.c, include/freetype/ftoutln.h (FT_Outline_Check): + New function to check the consistency of outline data. + + * src/base/ftobjs.c (FT_Load_Glyph): Use `FT_Outline_Check' to + ensure that loaded glyphs are valid. This allows certain fonts like + `tt1095m_.ttf' to be loaded even though it appears they contain + really funky glyphs. + + There still is a bug there, though. + + * src/truetype/ttgload.c (load_truetype_glyph): Fix error condition. + +2001-12-30 David Turner + + * src/autohint/ahhint.c (ah_hinter_load): Fix advance width + computation of auto-hinted glyphs. This noticeably improves the + spacing of letters in KDE and Gnome. + +2001-12-25 Antoine Leca + + * builds/dos/detect.mk: Correcting the order for Borland compilers: + 16-bit bcc was never selected, always overridden by 32-bit bcc32. + +2001-12-22 Francesco Zappa Nardelli + + * src/pfc/pcfread.c (pcf_load_font): Handle property `POINT_SIZE' + and fix incorrect computation of `available_sizes'. + +2001-12-22 David Turner + + * src/autohint/ahhint.c (ah_hinter_load): Auto-hinted glyphs had an + incorrect glyph advance in the case of mono-width fonts (like + Courier, Andale Mono, and others). + +2001-12-22 Detlef Würkner + + * builds/amiga/*: Adaptations to latest changes. + Support added for MorphOS. + +2001-12-22 Werner Lemberg + + * src/pshinter/pshrec.c (FT_COMPONENT): Redefine to `trace_pshrec'. + (ps_mask_table_merge, ps_hints_open, ps_hints_stem, + ps_hints_t1stem3, ps_hints_t2mask, ps_hints_t2counter): Fix + FT_ERROR messages. + * src/pshinter/pshalgo1.c (FT_COMPONENT): Define as + `trace_pshalgo1'. + * src/pshinter/pshalgo2.c (FT_COMPONENT): Define as + `trace_pshalgo2'. + * include/freetype/internal/ftdebug.h (FT_Trace): Updated. + + * docs/modules.txt: New file. + +2001-12-21 David Turner + + * src/pshinter/pshrec.c (ps_hints_t2mask, ps_hints_t2counter): + Ignore invalid `hintmask' and `cntrmask' operators (instead of + returning an error). Glyph 2028 of the CFF font `MSung-Light-Acro' + couldn't be rendered otherwise (it seems its charstring is buggy, + though this requires more analysis). + (FT_COMPONENT): Define. + + * src/cff/cffgload.c (CFF_Parse_CharStrings), src/psaux/t1decode.c + (T1_Decoder_Parse_Charstrings), src/pshinter/pshalgo2.c (*), Fixed a + bug where the X and Y axis where inverted in the postscript hinter. + This caused problem when displaying on non-square surfaces. + + * src/pshinter/pshalgo2.c: s/vertical/dimension/. + + * src/pshinter/pshglob.c (psh_globals_new): Replaced a floating + point constant with a fixed-float equivalent. For some reasons not + all compilers are capable of directly computing a floating pointer + constant casted to FT_Fixed, and will link a math library instead. + +2001-12-20 Werner Lemberg + + * src/cache/ftccache.c (ftc_node_destroy, ftc_cache_lookup): Fix + tracing strings. + * src/cache/ftccmap.c (ftc_cmap_family_init): Ditto. + * src/cache/ftcmanag.c (ftc_family_table_alloc, + ftc_family_table_free, FTC_Manager_Check): Ditto. + * src/cache/ftcsbits.c (ftc_sbit_node_load): Ditto. + + * src/base/ftobjs.c (FT_Done_Library): Remove compiler warning. + +2001-12-20 David Turner + + Added PostScript hinter support to the CFF and CID drivers. + + * include/freetype/internal/cfftypes.h (CFF_Font): New member + `pshinter'. + * src/cff/cffload.c (CFF_Get_Standard_Encoding): New function. + * src/cff/cffload.h: Updated. + * src/cff/cffgload.c (CFF_Init_Builder): Renamed to ... + (CFF_Builder_Init): This. + Added new argument `hinting'. + (CFF_Done_Builder): Renamed to ... + (CFF_Builder_Done): This. + (CFF_Init_Decoder): Added new argument `hinting'. + (CFF_Parse_CharStrings): Implement vstem support. + (CFF_Load_Glyph): Updated. + Add hinting support. + (cff_lookup_glyph_by_stdcharcode): Use CFF_Get_Standard_Encoding(). + (cff_argument_counts): Updated. + * src/cff/cffgload.h: Updated. + * src/cff/cffobjs.c: Include FT_INTERNAL_POSTSCRIPT_HINTS_H. + (CFF_Size_Get_Globals_Funcs, CFF_Size_Done, CFF_Size_Init, + CFF_Size_Reset, CFF_GlyphSlot_Done, CFF_GLyphSlot_Init): New + functions. + (CFF_Init_Face): Renamed to ... + (CFF_Face_Init): This. + Add hinter support. + (CFF_Done_Face): Renamed to ... + (CFF_Face_Done): This. + (CFF_Init_Driver): Renamed to ... + (CFF_Driver_Init): This. + (CFF_Done_Driver): Renamed to ... + (CFF_Driver_Done): This. + * src/cff/cffobjs.h: Updated. + * src/cff/cffdrivr.c (cff_driver_class): Updated. + + * include/freetype/internal/t1types.h (CID_FaceRec): New member + `pshinter'. + * src/cid/cidgload.c (CID_Load_Glyph): Add hinter support. + * src/cid/cidobjs.c: Include FT_INTERNAL_POSTSCRIPT_HINTS_H. + (CID_GlyphSlot_Done, CID_GlyphSlot_Init, CID_Size_Get_Globals_Funcs, + CID_Size_Done, CID_Size_Init, CID_Size_Reset): New functions. + (CID_Done_Face): Renamed to ... + (CID_Face_Done): This. + (CID_Init_Face): Renamed to ... + (CID_Face_Init): This. + Add hinting support. + (CID_Init_Driver): Renamed to ... + (CID_Driver_Init): This. + (CID_Done_Driver): Renamed to ... + (CID_Driver_Done): This. + * src/cid/cidobjs.h: Updated. + * src/cidriver.c: Updated. + + * src/pshinter/pshrec.c (t2_hint_stems): Fixed. + + * src/base/ftobjs.c (FT_Done_Library): Fixed a stupid bug that + crashed the library on exit. + + * src/type1/t1gload.c (T1_Load_Glyph): Enable font matrix + transformation of hinted glyphs. + + * src/cid/cidload.c (cid_read_subrs): Fix error condition. + + * src/cid/cidobjs.c (CID_Face_Done): Fixed a memory leak; the subrs + routines were never released when CID faces were destroyed. + + * src/cff/cffload.h, src/cff/cffload.c, src/cff/cffgload.c: Updated + to move the definition of encoding tables back within `cffload.c' + instead of making them part of a shared header (causing problems in + `multi' builds). This reverts change 2001-08-08. + + * docs/CHANGES: Updated for 2.0.6 release. + * docs/TODO: Added `stem3 and counter hints support' to the TODO + list for the Postscript hinter. + * docs/BUGS: Closed the AUTOHINT-NO-SBITS bug. + +2001-12-19 David Turner + + * include/freetype/cache/ftcache.h: Added comments to indicate that + some of the exported functions should only be used by applications + that need to implement custom cache types. + + * src/truetype/ttgload.c (cur_to_org, org_to_cur): Fixed a nasty bug + that prevented composites from loading correctly, due to missing + parentheses around macro parameters. + + * src/sfnt/sfobjs.c (SFNT_Load_Face): Make the `post' and `name' + tables optional to load PCL fonts properly. + + * src/truetype/ttgload.c (TT_Load_Glyph), src/base/ftobjs.c + (FT_Load_Glyph), include/freetype/freetype.h (FT_LOAD_SBITS_ONLY): + `Fixed' the bug that prevented embedded bitmaps to be loaded when + the auto-hinter is used. This actually is a hack but will be enough + until the internal re-design scheduled for FreeType 2.1. + + * src/raster/ftrend1.c (ft_raster1_render): Fixed a nasty outline + shifting bug in the monochrome renderer. + + * README: Updated version numbers to 2.0.6. + +2001-12-17 Werner Lemberg + + * src/truetype/ttgload.c (load_truetype_glyph): Fix test for invalid + glyph header. + +2001-12-15 Werner Lemberg + + * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Remove compiler warning. + * include/freetype/ftcache.h (FTC_Node_Unref): Removed. It is + already in ftcmanag.h. + * src/cache/ftcsbits.c (ftc_sbit_node_load): Remove unused variable + `gfam'. + * src/cache/ftcmanag.c (ftc_family_table_alloc, + * ftc_family_table_free): Use FT_EXPORT_DEF. + * include/freetype/cache/ftcmanag.h: Updated. + * src/cache/ftccache.c (ftc_node_destroy): Use FT_EXPORT_DEF. + * src/cache/ftccmap.c (ftc_cmap_node_init): Remove unused variable + `cfam'. + Remove compiler warning. + (FTC_CMapCache_Lookup): Remove compiler warnings. + (ftc_cmap_family_init): Ditto. + (FTC_CMapCache_Lookup): Ditto. + + * builds/unix/configure.ac: Increase `version_info' to 8:0:2. + * builds/unix/configure: Regenerated. + +2001-12-14 Werner Lemberg + + * builds/mac/README: Updated. + +2001-12-14 Scott Long + + * src/truetype/ttgload.c (load_truetype_glyph): Fixing crash when + dealing with invalid fonts (i.e. glyph size < 10 bytes). + +2001-12-14 Sam Latinga + + * builds/mac/freetype.make: A new Makefile to build with MPW on + MacOS classic. + +2001-12-14 David Turner + + * src/truetype/ttgload.c (TT_Load_Glyph), src/type1/t1gload.c + (T1_Load_Glyph), src/cid/cidgload.c (CID_Load_Glyph), + src/cff/cffgload.c (CFF_Load_Glyph): Fixed a serious bug common to + all font drivers (the advance width was never hinted when it + should). + + * include/freetype/freetype.h (FREETYPE_PATCH): New macro. + * src/base/ftdbgmem.c (debug_mem_dummy) [!FT_DEBUG_MEMORY]: Don't + use `extern' keyword. + +2001-12-12 David Turner + + * src/pshinter/pshglob.c (psh_blues_scale_zones, psh_blues_snap_stem + psh_globals_new): Adding correct BlueScale/BlueShift support, plus + family blues processing. + * src/pshinter/pshglob.h (PSH_BluesRec): Updated. + + Started adding support for the Postscript hinter in the CFF module. + + * src/cff/cffgload.c: Include FT_INTERNAL_POSTSCRIPT_HINTS_H. + (CFF_Parse_CharStrings): Implement it. + * src/cff/cffgload.h: Updated. + +2001-12-12 Werner Lemberg + + * builds/unix/freetype2.m4: Some portability fixes. + +2001-12-11 Jouk Jansen + + * src/base/descrip.mms (OBJS): Add ftdebug.obj. + +2001-12-11 Werner Lemberg + + * src/sfnt/ttload.c (TT_Load_Generic_Header): Typos. + +2001-12-11 David Turner + + * builds/unix/freetype-config.in: Modified the script to prevent + passing `-L/usr/lib' to gcc. + + * docs/FTL.TXT: Simple fix (change `LICENSE.TXT' to `FTL.TXT'). + + * builds/unix/freetype2.m4: New file for checking configure paths. + We need to install it in $(prefix)/share/aclocal/freetype2.m4 but I + didn't modify builds/unix/install.mk yet. + + * INSTALL: Updated the instructions to build shared libraries with + Jam. They were simply wrong. + + * src/base/fttrigon.c (FT_Cos): Fixed a small bug that caused + slightly improper results for `FT_Cos' and `FT_Sin' (example: + FT_Sin(0) == -1!). + +2001-12-11 Detlef Würkner + + * include/freetype/internal/ftstream.h (GET_LongLE, GET_ULongLE): + Fixed incorrect argument types. + +2001-12-10 Francesco Zappa Nardelli + + * src/pcf/pcfdriver.c (PCF_Init_Face): Allow Xft to use PCF fonts + by setting the `face->metrics.max_advance' correctly. + +2001-12-07 David Turner + + * include/freetype/cache/ftccmap.h, src/cache/ftccmap.c: Added new + charmap cache. + * src/cache/ftcache.c: Updated. + + * src/autohint/ahhint.c (ah_hinter_hint_edges): s/UNUSED/FT_UNUSED/. + +2001-12-06 Leonard Rosenthol + + Added support for reading .dfont files on Mac OS X. Also added a + new routine which looks up a given font by name in the Mac OS and + returns the disk file where it resides. + + * src/base/ftmac.c: Include and . + (is_dfont): New auxiliary function. + (FT_New_Face_From_dfont): New function. + (FT_GetFile_From_Mac_Name): New exported function. + (FT_New_Face): Updated. + * include/freetype/ftmac.h: Updated. + +2001-12-06 David Turner + + * src/cache/Jamfile, src/cache/rules.mk: Updated. + +2001-12-06 Werner Lemberg + + * INSTALL: Small update. + +2001-12-05 David Turner + + * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Re-ordered code for + debugging purposes. + Comment out use of `origin'. + + * src/smooth/ftsmooth.c (ft_smooth_render): Fixed a nasty hidden bug + where outline shifting wasn't correctly undone after bitmap + rasterization. This created problems with certain glyphs (like '"' + of certain fonts) and the cache system. + + * src/pshinter/pshalgo1.c (psh1_hint_table_init): Fix typo. + * src/pshinter/pshalgo2.c (psh2_hint_table_init): Fix typo. + (ps2_hints_apply): Small fix. + +2001-12-05 David Turner + + * src/pshinter/pshalgo2.c (psh2_hint_table_init), + src/pshinter/pshalgo1.c (psh1_hint_table_init): Removed compiler + warnings. + + * include/freetype/ftcache.h, include/freetype/cache/*, src/cache/*: + Yet another massive rewrite of the caching sub-system in order to + both increase performance and allow simpler cache sub-classing. As + an example, the code for the image and sbit caches is now much + simpler. + + I still need to update the documentation in + www/freetype2/docs/cache.html to reflect the new design though. + + * include/freetype/config/ftheader.h (FT_CACHE_CHARMAP_H): New + macro. + (FT_CACHE_INTERNAL_CACHE_H): Updated. + +2001-12-05 David Krause + + * docs/license.txt: s/X Windows/X Window System/. + +2001-12-04 Werner Lemberg + + * src/raster/ftraster.c: Fix definition condition of MEM_Set(). + * src/smooth/ftgrays.c (M_Y): Change value to 192. + * src/base/ftdbgmem.c (ft_mem_table_destroy): Fix printf() parameter. + Remove unused variable. + * src/cache/ftcimage.c (ftc_image_node_init, + ftc_image_node_compare): Remove unused variables. + * src/cache/ftcsbits.c (ftc_sbit_node_weight): Remove unused + variable. + * src/raster/ftraster.c (MEM_Set): Move definition down to avoid + compiler warning. + * src/autohint/ahhint.c (ah_hinter_hint_edges): Use UNUSED() to + avoid compiler warnings. + * src/pcf/pcfread.c (tableNames): Use `const'. + (pcf_read_TOC): Change counter name to avoid compiler warning. + Use `const'. + * src/pshinter/pshrec.c (ps_hints_close): Remove redundant + declaration. + * src/pshinter/pshalgo1.c (psh1_hint_table_init): Rename variables + to avoid shadowing. + * src/pshinter/pshalgo2.c (psh2_hint_table_activate_mask): Ditto. + * src/type1/t1objs.h: Remove double declarations of `T1_Size_Init()' + and `T1_Size_Done()'. + +2001-11-20 Antoine Leca + + * include/freetype/ttnameid.h: Added some new Microsoft language + codes and LCIDs as found in MSDN (Passport SDK). Also added + comments about the meaning of bit 57 of the `OS/2' table + (TT_UCR_SURROGATES) which (with OpenType v.1.3) now means `there is + a character beyond 0xFFFF in this font'. Thanks to Detlef Würkner + for noticing this. + +2001-11-20 David Turner + + * src/pshinter/{pshalgo2.c, pshalgo1.c}: Fixed stupid bug in sorting + routine that created nasty alignment artefacts. + + * src/pshinter/pshrec.c, tests/gview.c: Debugging updates. + + * src/smooth/ftgrays.c: De-activated experimental gamma support. + Apparently, `optimal' gamma tables depend on the monitor type, + resolution and general karma, so it's better to compute them outside + of the rasterizer itself. + (gray_convert_glyph): Use `volatile' keyword. + +2001-10-29 David Turner + + Adding experimental `gamma' support. This produces smoother glyphs + at small sizes for very little cost. + + * src/smooth/ftgrays.c (grays_init_gamma): New function. + (gray_raster_new): Use it. + + Various fixes to the auto-hinter. They merely improve the output of + sans-serif fonts. Note that there are still problems with serifed + fonts and composites (accented characters). + + * src/autohint/ahglyph.c (ah_outline_load, + ah_outline_link_segments): Implement it. + Fix typos. + (ah_outline_save, ah_outline_compute_segments): Fix typos. + * src/autohint/ahhint.c (ah_align_serif_edge): New argument + `vertical'. Implement improvement. + (ah_hint_edges_3, ah_hinter_hint_edges): Implement it. + Fix typos. + (ah_hinter_align_strong_points, ah_hinter_align_weak_points): Fix + typos. + (ah_hinter_load): Set `ah_debug_hinter' if DEBUG_HINTER is defined. + * src/autohint/ahmodule.c: Implement support for DEBUG_HINTER macro. + * src/autohint/ahtypes.h: Ditto. + (AH_Hinter): Remove `disable_horz_edges' and `disable_vert_edges' + (making them global as `ah_debug_disable_horz' and + `ah_debug_disable_vert'). + Fix typos. + + * tests/gview.c: Updated the debugging glyph viewer to show the + hints generated by the `autohint' module. + +2001-10-27 David Turner + + * src/cache/ftcchunk.c (ftc_chunk_cache_lookup): Fixed a bug that + considerably lowered the performance of the abstract chunk cache. + +2001-10-26 David Turner + + * include/freetype/ftcache.h, include/freetype/cache/*.h, + src/cache/*.c: Major re-design of the cache sub-system to provide + better performance as well as an `Acquire'/`Release' API. Seems to + work well here, but probably needs a bit more testing. + +2001-10-26 Leonard Rosenthol + + * builds/mac/README: Updated to reflect my taking over the project + and that is now being actively maintained. + + * src/base/ftmac.c (parse_fond): Applied patches from Paul Miller + to support loading a face other than the + first from a FOND resource. + (FT_New_Face_From_FOND): Updated. + +2001-10-25 Leonard Rosenthol + + * builds/mac/ftlib.prj: Update of CodeWarrior project file for Mac + OS for latest version (7) of CWPro and for recent changes to the FT + source tree. + +2001-10-25 David Turner + + * include/freetype/config/ftoption.h: Updated comments to explain + precisely how to use project-specific macro definitions without + modifying this file manually. + + (FT_CONFIG_FORCE_INT64): Define. + + (FT_DEBUG_MEMORY): New macro. + +2001-10-24 Tom Kacvinsky + + * builds/unix/ftsystem.c (FT_New_Memory): Added a missing `{'. + +2001-10-23 David Turner + + * include/freetype/internal/ftmemory.h, src/base/ftdbgmem.c: + Improvements to the memory debugger to report more information in + case of errors. Also, some allocations that occurred through REALLOC + couldn't be previously caught correctly. + + * src/autohint/ahglyph.c (ah_outline_compute_segments, + ah_outline_compute_edges), src/raster/ftraster.c (ft_black_new), + src/smooth/ftgrays.c (gray_render_span, gray_raster_new): Replaced + liberal uses of memset() by the MEM_Set() macro. + +2001-10-23 David Turner + + * src/raster/ftraster.c (Update): Removed to be inlined in ... + (Sort): Updated. + +2001-10-22 David Turner + + * builds/unix/ftsystem.c (FT_New_Memory, FT_Done_Memory), + builds/vms/ftsystem.c (FT_New_Memory, FT_Done_Memory), + builds/amiga/ftsystem.c (FT_New_Memory, FT_Done_Memory), + src/base/ftdbgmem.c: Updated the memory debugger and + platform-specific implementations of `ftsystem' in order to be able + to debug memory allocations on Unix, VMS and Amiga too! + + * src/pshinter/pshalgo2.c (psh2_hint_table_record_mask): Removed + some bogus warnings. + + * include/freetype/internal/ftmemory.h, src/base/ftdbgmem.c: + Modified the debugging memory manager to report the location (source + file name + line number) where leaked memory blocks are allocated in + the source file. + + * src/base/ftdbgmem.c: New debugging memory manager. You must + define the FT_DEBUG_MEMORY macro in `ftoption.h' to enable it. It + will record every memory block allocated and report simple errors + like memory leaks and double deletes. + + * src/base/Jamfile: Include ftdbgmem. + * src/base/rules.mk: Ditto. + * src/base/ftbase.c: Include ftdbgmem.c. + + * include/freetype/config/ftoption.h: Added the FT_DEBUG_MEMORY + macro definition. + + * src/base/ftsystem.c (FT_New_Memory, FT_Done_Memory): Modified the + base component to use the debugging memory manager when the macro + FT_DEBUG_MEMORY is defined. + +2001-10-21 Tom Kacvinsky + + * src/cff/cffload.c (CFF_Done_Font): Free subfonts array only if + we are working with a CID keyed CFF font. Otherwise, a variable + that was never allocated memory might freed. This is a correction + to the previous patch for freeing subfonts. + +2001-10-21 Tom Kacvinsky + + * src/cff/cffload.c (CFF_Done_Font): Free the subfonts array to + avoid a memory leak. + +2001-10-21 David Turner + + * src/pshinter/pshalgo2.c, src/pshinter/pshalgo1.c, + src/pshinter/pshglob.c: Removing compiler warnings in pedantic modes + (in multi-object compilation mode, mainly). + +2001-10-20 Tom Kacvinsky + + * src/type1/t1load.c (parse_encoding): Add a test to make sure + that custom encodings (i.e., neither StandardEncoding nor + ExpertEncoding) are not loaded twice when the Type 1 font is + synthetic. + + * src/type1/t1load.c (parse_font_name, parse_subrs): Added a test + for when loading synthetic fonts to make sure that the font name + and subroutines are not loaded twice. This is to remove a memory + leak that occurred because the original memory blocks for these + objects were not deallocated when the objects were parsed the + second time. + +2001-10-19 David Turner + + * src/smooth/ftgrays.c, src/pshinter/pshglob.h, + src/pshinter/pshrec.c, src/pshinter/pshalgo2.c: Getting rid of + compiler warnings. + + * src/pshinter/module.mk, src/pshinter/rules.mk: Adding control + files to build the PostScript hinter with the `old' build system. + +2001-10-19 Jacob Jansen + + * descrip.mms, src/pshinter/descrip.mms: Updates to the VMS build + files. + +2001-10-18 David Turner + + * src/psnames/pstables.h, src/tools/glnames.py: Rewrote the + `glnames.py' script used to generate the `pstables.h' header file. + The old one contained a serious bug that made FreeType return + incorrect glyph names for certain glyphs. + + * src/truetype/ttdriver.c (Set_Char_Sizes): Changing computation of + pixel size from character size to use rounding. This is an + experiment to see whether this gives values similar to Windows for + scaled ascent/descent/etc. + + * src/base/ftcalc.c (FT_Div64by32): Changed the implementation + slightly since the original code was mis-compiled on Mac machines + using the MPW C compiler. + + * src/base/ftobjs.c (FT_Realloc): When a memory block was grown + through FT_Realloc(), the new bytes were not set to 0, which created + some strange bugs in the PostScript hinter. + (destroy_face): Don't deallocate unconditionally. + + * src/cid/cidgload.c (CID_Compute_Max_Advance, CID_Load_Glyph): + Adding support to new PostScript hinter. + + * include/freetype/internal/psglobal.h, + include/freetype/internal/pshints.h, + include/freetype/config/ftmodule.h, src/pshinter/Jamfile, + src/pshinter/pshalgo.h, src/pshinter/pshalgo1.h, + src/pshinter/pshalgo1.c, src/pshinter/pshalgo2.h, + src/pshinter/pshalgo2.c, src/pshinter/pshglob.h, + src/pshinter/pshglob.c, src/pshinter/pshinter.c, + src/pshinter/pshmod.c, src/pshinter/pshmod.h, src/pshinter/pshrec.c, + src/pshinter/pshrec.h: Adding new PostScript hinter module. + + * include/freetype/internal/ftobjs.h, + include/freetype/internal/internal.h, + include/freetype/internal/psaux.h, + include/freetype/internal/t1types.h, src/psaux/psobjs.c, + src/psaux/psobjs.h, src/psaux/t1decode.h, src/psaux/t1decode.c, + src/type1/t1driver.c, src/type1/t1gload.c, src/type1/t1objs.c, + src/type1/t1objs.h: Updates to use the new PostScript hinter. + + * tests/Jamfile, tests/gview.c: Adding a new glyph hinting + viewer/debugger to the source tree. Note that you will _not_ be + able to compile it since it depends on an unavailable graphics + library named `Nirvana' to render vector images. + +2001-10-17 David Turner + + + * Version 2.0.5 released. + ========================= + + + * include/freetype/freetype.h, include/internal/ftobjs.h, + src/base/ftobjs.c, src/type1/t1driver.c: Adding a new function named + 'FT_Get_Postscript_Name' to retrieve the PostScript name of a given + font. Should work with all formats except pure CFF/CEF fonts (this + will be added soon). + + * src/cid/cidriver (cid_get_postscript_name): New function. + (CID_Get_Interface): Handle `postscript_name' interface. + + * src/sfnt/sfdriver.c (get_sfnt_postscript_name): New function. + (SFNT_Get_Interface): Handle `postscript_name' interface. + + * src/type1/t1driver.c (t1_get_ps_name): New function. + (Get_Interface): Handle `postscript_name' interface. + + * README, docs/CHANGES: Updated for 2.0.5 release. + +2001-10-08 David Turner + + Fixed a bug in `glnames.py' that prevented it from generating + correct glyph names tables. This resulted in the unavailability of + certain glyphs like `Cacute', `cacute' and `lslash' in Unicode + charmaps, even if these were present in the font (causing problems + for Polish users). + + * src/tools/glnames.py (mac_standard_names): Fixed. + (t1_standard_strings): Some fixes and renamed to ... + (sid_standard_names): This. + (t1_expert_encoding): Fixed. + (the_adobe_glyph_list): Renamed to ... + (adobe_glyph_names): This. + (the_adobe_glyphs): Renamed to ... + (adobe_glyph_values): This. + (dump_mac_indices, dump_glyph_list, dump_unicode_values, main): + Updated. + * src/psnames/pstables.h: Regenerated. + * src/psnames/psmodule.c (PS_Unicode_Value): Fix offset. + Fix return value. + Use `sid_standard_table' and `ps_names_to_unicode' instead of + `t1_standard_glyphs' and `names_to_unicode'. + (PS_Macintosh_Name): Use `ps_glyph_names' instead of + `standard_glyph_names'. + (PS_Standard_Strings): Use `sid_standard_names' instead of + `t1_standard_glyphs'. + + * doc/BUGS, doc/TODO: New documents. + +2001-10-07 Richard Barber + + * src/cache/ftlru.c (FT_Lru_Lookup_Node): Fixed a bug that prevented + correct LRU behaviour. + +2001-10-07 David Turner + + setjmp() and longjmp() are now used for rollback (i.e. when memory + pool overflow occurs). + + Function names are now all uniformly prefixed with `gray_'. + + * src/smooth/ftgrays.c: Include . + (ErrRaster_MemoryOverflow): New macro. + (TArea): New type to store area values in each cell (using `int' was + too small on 16-bit systems). is included to properly + get the needed data type. + (TCell, TRaster): Use it. + (TRaster): New element `jump_buffer'. + (gray_compute_cbox): Use `RAS_ARG' as the only parameter and get + `outline' from it. + (gray_record_cell): Use longjmp(). + (gray_set_cell): Use gray_record_cell() for error handling. + (gray_render_line, gray_render_conic, gray_render_cubic): Simplify. + (gray_convert_glyph_inner): New function, using setjmp(). + (gray_convert_glyph): Use it. + +2001-10-07 David Turner + + Provide a public API to manage multiple size objects for a given + FT_Face in the new header file `ftsizes.h'. + + * include/freetype/ftsizes.h: New header file, + * include/freetype/internal/ftobjs.h: Use it. + Remove declarations of FT_New_Size and FT_Done_Size (moved to + ftsizes.h). + * include/freetype/config/ftheader.h (FT_SIZES_H): New macro. + * src/base/ftobjs.c (FT_Activate_Size): New function. + * src/cache/ftcmanag.c: Include ftsizes.h. + (ftc_manager_init_size, ftc_manager_flush_size): Use + FT_Activate_Size. + +2001-09-20 Detlef Würkner + + * builds/amiga/*: Added port to Amiga with the SAS/C compiler. + +2001-09-15 Detlef Würkner + + * src/type1/t1afm.c (T1_Done_AFM): Free `afm'. + +2001-09-10 Yao Zhang + + * src/sfnt/ttcmap.c (code_to_index2): Handle code values with + hi-byte == 0 correctly. + +2001-09-10 Werner Lemberg + + * builds/link-std.mk ($(PROJECT_LIBRARY)): Fix typo. + +2001-08-30 Martin Muskens + + * src/type1/t1load.c (parse_font_matrix): A new way to compute the + units per EM with greater accuracy (important for embedded T1 fonts + in PDF documents that were automatically generated from TrueType + ones). + + * src/type1/t1load.c (is_alpha): Now supports `+' in font names; + this is used in embedded fonts. + + * src/psaux/psobjs.c (PS_Table_Add): Fixed a reallocation bug that + generated a dangling pointer reference. + +2001-08-30 Anthony Feik + + * src/type1/t1afm.c (T1_Read_Afm): Now correctly sets the flag + FT_FACE_FLAG_KERNING when appropriate for Type1 + AFM files. + +2001-08-25 Werner Lemberg + + * src/sfnt/ttload.c (TT_Load_CMap): Fix frame length of + `cmap_rec_fields'. + + * include/freetype/fterrors.h [!FT_CONFIG_OPTION_USE_MODULE_ERRORS]: + Undefine FT_ERR_BASE before defining again. + +2001-08-22 Werner Lemberg + + * src/truetype/ttinterp.h: Fix prototype of TT_Move_Func. + +2001-08-21 Werner Lemberg + + * builds/dos/dos-def.mk (NO_OUTPUT): Don't use `&>' but `>'. + +2001-08-21 David Turner + + * include/freetype/config/ftoption.h: Changed the default setting + for FT_CONFIG_OPTION_USE_MODULE_ERRORS to undefined, since it breaks + source compatibility in a few cases. Updated the comment to explain + that too. + +2001-08-17 Martin Muskens + + * src/base/ftcalc.c (FT_MulDiv): Fixed serious typo. + +2001-08-12 Werner Lemberg + + Updating to OpenType 1.3. + + * include/freetype/internal/tttypes.h (TT_CMap0, TT_CMap2, TT_CMap4, + TT_CMap6): Adding field `language'. + (TT_CMapTable): Removing field `language'. + Type of `length' field changed to FT_ULong. + Adding fields for cmaps format 8, 10, and 12. + (TT_CMapGroup): New auxiliary structure. + (TT_CMap8_12, TT_CMap10): New structures. + * include/freetype/tttables.h (TT_HoriHeader, TT_VertHeader): + Removed last element of `Reserved' array. + * include/freetype/ttnameid.h (TT_PLATFORM_CUSTOM, TT_MS_ID_UCS_4, + TT_NAME_ID_CID_FINDFONT_NAME): New macros. + + * src/sfnt/ttcmap.c (TT_CharMap_Load): Updated loading of `language' + field to the new structures. + Fixed freeing of arrays in case of unsuccessful loads. + Added support for loading format 8, 10, and 12 cmaps. + (TT_CharMap_Free): Added support for freeing format 8, 10, and 12 + cmaps. + (code_to_index4): Small improvement. + (code_to_index6): Ditto. + (code_to_index8_12, code_to_index10): New functions. + * src/sfnt/ttload.c (TT_Load_Metrics_Header): Updated to new + structure. + (TT_Load_CMap): Ditto. + + * src/sfnt/sfobjs.c (tt_encodings): Add MS UCS4 table (before MS + Unicode). + +2001-08-11 Werner Lemberg + + * src/type1/t1driver.c (t1_get_name_index): Fix compiler warning. + +2001-08-09 Tom Kacvinsky + + * src/cff/cffdrivr.c (get_cff_glyph_name): Renamed to + cff_get_glyph_name for consistency. + + (cff_get_glyph_index): Minor documentation change. + + * src/type1/t1driver.c (t1_get_name_index): New function used in + Get_Interface as the function returned when the `name_index' + function is requested. + + (get_t1_glyph_name): Renamed to t1_get_glyph_name for consistency. + +2001-08-08 Tom Kacvinsky + + * src/cff/cffload.c: Removed definitions of cff_isoadobe_charset, + cff_expert_charset, cff_expertsubset_charset, cff_standard_encoding, + and cff_expert_encoding arrays to cffload.h. + + * src/cff/cffload.h: Added definitions of cff_isoadobe_charset, + cff_expert_charset, cff_expertsubset_charset, cff_standard_encoding, + and cff_expert_encoding arrays. + + * src/cff/cffdrivr.c (cff_get_name_index): New function, returned + when `cff_get_interface' is called with a request for the + `name_index' function. + + (cff_get_interface): Modified so that it returns the function + `cff_get_name_index' when the `name_index' function is requested. + + * src/base/ftobjs.c (FT_Get_Name_Index): New function, used to + return a glyph index for a given glyph name only if the driver + supports glyph names. + + * include/freetype/internal/ftobjs.h (FT_Name_Index_Requester): + New function pointer type definition used in the function + FT_Get_Name_Index. + + * include/freetype/freetype.h (FT_Get_Name_Index): Added + documentation and prototype. + +2001-07-26 Werner Lemberg + + * builds/cygwin/*: Removed. Use the unix stuff instead. + +2001-07-26 Jouk Jansen + + * builds/vms/ftconfig.h (FT_CALLBACK_DEF): Updated to change dated + 2001-06-27. + +2001-07-17 Werner Lemberg + + * include/freetype/internal/psaux.h (PS_Table): Use FT_Offset for + `cursor' and `capacity'. + * src/psaux/psobjc.c (reallocate_t1_table): Use FT_Long for second + parameter. + (PS_Table_Add): Use FT_Offset for `new_size'. + + Add support for version 0.5 maxp tables. + + * src/sfnt/ttload.c (TT_Load_MaxProfile): Implement it. + (TT_Load_OS2): Initialize some values. + +2001-07-13 Werner Lemberg + + * src/base/ftsynth.c: Include ftcalc.h unconditionally. + +2001-07-07 David Turner + + * src/truetype/ttgload.c, src/truetype/ttinterp.c, src/pcf/pcfread: + Removed pedantic compiler warnings when the bytecode interpreter is + compiled in. + +2001-07-03 Werner Lemberg + + * src/autohint/ahhint.c (ah_hinter_align_weak_points): Remove + unused variable `edges'. + (ah_hinter_load): Remove unused variables `old_width' and + `new_width'. + * src/cid/cidload.c (cid_decrypt): Use `U' for constant (again). + * src/psaux/psobjs.c (T1_Decrypt): Ditto. + * src/type1/t1parse.c (T1_Get_Private_Dict): Ditto. + +2001-06-28 David Turner + + * include/internal/ftstream.h: Modified the definitions + of the FT_GET_XXXX and NEXT_XXXX macros for 16-bit correctness. + +2001-06-26 Werner Lemberg + + * src/cid/cidload.c, src/cid/cidload.h (cid_decrypt): Use FT_Offset + instead of FT_Int as type for `length' parameter. + * include/freetype/internal/psaux.h (PSAux_Interface): Updated. + +2001-06-27 Wolfgang Domröse + + * src/psaux/psobjs.c, src/psaux/psobjs.h (T1_Decrypt): Use FT_Offset + instead of FT_Int as type for `length' parameter. + + + * Version 2.0.4 released. + ========================= + + +2001-06-27 David Turner + + * builds/unix/ftconfig.in: Changed the definition of the + FT_CALLBACK_DEF macro. + + * include/freetype/ftconfig.h, src/*/*.c: Changed the definition and + use of the FT_CALLBACK_DEF macro in order to support 16-bit + compilers. + + * builds/unix/ftconfig.in: Changed the definition of the + FT_CALLBACK_DEF macro. + + * src/sfnt/ttload.c (TT_Load_Kern): The kern table loader now ensures + that the kerning table is correctly sorted (some problem fonts don't + have a correct kern table). + +2001-06-26 Wolfgang Domröse + + * include/freetype/internal/ftstream.h (FT_GET_OFF3_LE): Fix typo. + +2001-06-24 David Turner + + * src/base/ftcalc.c (ft_div64by32): Fixed the source to work + correctly on 16-bit systems. + +2001-06-23 Anthony Fok + + * debian/*: Added Debian package build directory for 2.0.4. + +2001-06-22 David Turner + + * docs/PATENTS: Added patents disclaimer. This one was missing! + + * docs/CHANGES, docs/todo: Updated for the upcoming 2.0.4 release. + +2001-06-20 Werner Lemberg + + * include/freetype/config/ftconfig.h: Add two more `L's to + constants. + Add missing semicolons. + + * builds/toplevel.mk: Do similar change as for + builds/unix/detect.mk. + + * include/freetype/freetype.h (FT_ENC_TAG): New version to make it + easier to redefine. + * include/freetype/ftimage.h (FT_IMAGE_TAG): Ditto. + + * src/pcf/pcfread.c (pcf_get_encodings): Add cast. + +2001-06-19 David Turner + + * builds/win32/visualc/freetype.dsp, builds/win32/visualc/index.html: + Updated the Visual C++ project (for the 2.0.4 release). + + * builds/unix/detect.mk: Added rule for AIX detection (which uses + /usr/sbin/init instead of /sbin/init). + + * include/freetype/fterrors.h, src/*/*err*.h: Updated some of the + error macros to simplify handling of new error scheme. + +2001-06-19 Werner Lemberg + + * include/freetype/fttypes.h (FT_ERROR_MODULE): New macro. + +2001-06-19 David Turner + + Removing _lots_ of compiler warnings when the most pedantic warning + levels of Visual C++ and Borland C++ are used. Too many files to be + listed here, but FT2 now compiles without warnings with VC++ and the + `/W4' warning level (lint-style). + + * include/freetype/freetype.h (FT_New_Memory_Face): Updated + documentation. + * include/freetype/fttypes.h (FT_BOOL): New macro. + * include/freetype/internal/ftdebug.h: Add #pragma for Visual C++ + to suppress warning. + * include/freetype/internal/ftstream.h (FT_GET_SHORT_{BE,LE}, + FT_GET_OFF3_{BE,LE}, FT_GET_LONG_{BE,LE}): New macros. + (NEXT_*): Use them. + * src/autohint/ahglobal.c: Include FT_INTERNAL_DEBUG_H. + (FT_New_Memory_Face): Add `const' to function declaration. + +2001-06-18 Werner Lemberg + + Minor cleanups to remove compiler warnings. + + * include/freetype/cache/ftcmanag.h (FTC_MAX_BYTES_DEFAULT): Use + `L' for constant. + * include/freetype/config/ftoption.h (FT_RENDER_POOL_SIZE): Ditto. + * src/base/ftcalc.c (FT_MulDiv): Use `L' for constant. + * src/base/ftglyph.c (FT_Glyph_Get_CBox): Remove `error' variable. + * src/base/fttrigon.c (ft_trig_arctan_table): Use `L' for constants. + * src/base/ftobjs.c (FT_Done_Size): Fix return value. + (FT_Set_Char_Size, FT_Set_Pixel_Sizes, FT_Get_Kerning): Remove + unused `memory' variable. + * src/autohint/ahglyph.c (ah_get_orientation): Use `L' for constant. + * src/autohint/ahhint.c (ah_hint_edges_3, + ah_hinter_align_edge_points): Remove unused `before' and `after' + variables. + (ah_hinter_align_weak_points): Remove unused `edge_limit' variable. + (ah_hinter_load): Remove unused `new_advance', `start_contour', + and `metrics' variables. + * src/cff/cffload.c (CFF_Load_Encoding): Remove dead code to avoid + compiler warning. + * src/cff/cffobjs.c (CFF_Init_Face): Remove unused `base_offset' + variable. + * src/cff/cffgload.c (CFF_Parse_CharStrings): Remove unused + `outline' variable. + (cff_compute_bias): Use `U' for constant. + * src/cid/cidload.c (cid_decrypt): Ditto. + * src/psaux/psobjs.c (T1_Decrypt): Ditto. + * src/psaux/t1decode.c (T1_Decoder_Parse_CharStrings): Ditto. + * src/sfnt/ttload.c (TT_Load_Kern): Remove unused `version' + variable. + * src/sfnt/ttsbit.c (TT_Load_SBit_Image): Remove unused `top' + variable. + * src/truetype/ttgload.c (load_truetype_glyph): Remove unused + `num_contours' and `ins_offset' variables. + (compute_glyph_metrics): Remove unused `Top' and `x_scale' + variables. + (TT_Load_Glyph): Remove unused `memory' variable. + * src/smooth/ftgrays.c (grays_raster_render): Use `L' for constants. + +2001-06-18 Werner Lemberg + + Make the new error scheme source compatible with older FT versions + by introducing another layer. + + * include/freetype/fterrors.h (FT_ERRORDEF_, FT_NOERRORDEF_): New + macros. + (FT_NOERRORDEF): Removed. + * include/*/*err*.h: Use FT_ERRORDEF_ and FT_NOERRORDEF_. + +2001-06-16 Werner Lemberg + + * include/freetype/freetype.h (FT_ENC_TAG): New macro. + (FT_Encoding_): Use it. + * include/freetype/ftimage.h (FT_IMAGE_TAG): Define it + conditionally. + +2001-06-14 David Turner + + Modified the TrueType interpreter to let it use the new + trigonometric functions provided in `fttrigon.h'. This gets rid of + some old 64-bit computation routines, as well as many warnings when + compiling the library with the `long long' 64-bit integer type. + + * include/freetype/config/ftoption.h: Undefine + FT_CONFIG_OPTION_OLD_CALCS. + * include/freetype/internal/ftcalc.h: Rearrange use of + FT_CONFIG_OPTION_OLD_CALCS. + * src/base/ftcalc.c: Add declaration of FT_Int64 if + FT_CONFIG_OPTION_OLD_CALCS isn't defined. + * src/truetype/ttinterp.c: Use FT_TRIGONOMETRY_H. + (Norm): Add a special version if FT_CONFIG_OPTION_OLD_CALCS isn't + defined. + (Current_Ratio, Normalize): Simplify code. + +2001-06-11 Mike Owens + + * src/base/ftcalc.c (FT_MulDiv, FT_DivFix, FT_Sqrt64): Remove + compiler warnings. + +2001-06-08 Werner Lemberg + + * builds/unix/configure.in: Renamed to ... + * builds/unix/configure.ac: This to make sure that autoconf 2.50 is + needed. + Run `autoupdate' on it. + Increase `version_info' to 7:0:1. + * builds/unix/configure: Regenerated. + +2001-06-08 David Turner + + * src/autohint/ahhint.c (ah_hinter_load_glyph): Fixed a bug that + corrupted transformed glyphs that were auto-hinted (the transform + was applied twice). + + Fixed a bug that returned an invalid linear width for composite + TrueType glyphs. + + * include/internal/tttypes.h (TT_Loader_): Two new elements `linear' + and `linear_def'. + * src/truetype/ttgload.c (load_truetype_glyph, + compute_glyph_metrics): Use it. + + * include/fttypes.h (FT_ERROR_BASE): New macro. + * src/base/ftobjs.c (FT_Open_Face, FT_Render_Glyph_Internal): Use it + to make source code work with the new error scheme implemented by + Werner. + * src/base/ftoutln.c (FT_Outline_Render): Ditto. + +2001-06-07 Werner Lemberg + + Updating to libtool 1.4.0 and autoconf 2.50. + + * builds/unix/ltconfig: Removed. + * builds/unix/ltmain.sh, builds/unix/configure.in, + builds/unix/aclocal.m4: Updated. + * builds/unix/configure: Regenerated. + +2001-06-06 Werner Lemberg + + Complete redesign of error codes. Please check ftmoderr.h for more + details. + + * include/freetype/internal/cfferrs.h, + include/freetype/internal/tterrors.h, + include/freetype/internal/t1errors.h: Removed. Replaced with files + local to the module. All extra error codes have been moved to + `fterrors.h'. + + * src/sfnt/ttpost.h: Move error codes to `fterrors.h'. + + * src/autohint/aherrors.h, src/cache/ftcerror.h, src/cff/cfferrs.h, + src/cid/ciderrs.h, src/pcf/pcferror.h, src/psaux/psauxerr.h, + src/psnames/psnamerr.h, src/raster/rasterrs.h, src/sfnt/sferrors.h, + src/smooth/ftsmerrs.h, src/truetype/tterrors.h, + src/type1/t1errors.h, src/winfonts/fnterrs.h: New files defining the + error names for the module it belongs to. + + * include/freetype/ftmoderr.h: New file, defining the module error + offsets. Its structure is similar to `fterrors.h'. + + * include/freetype/fterrors.h (FT_NOERRORDEF): New macro. + (FT_ERRORDEF): Redefined to use module error offsets. + All internal error codes are now public; unused error codes have + been removed, some are new. + + * include/freetype/config/ftheader.h (FT_MODULE_ERRORS_H): New + macro. + * include/freetype/config/ftoption.h + (FT_CONFIG_OPTION_USE_MODULE_ERRORS): New macro. + + All other source files have been updated to use the new error codes; + some already existing (internal) error codes local to a module have + been renamed to give them the same name as in the base module. + + All make files have been updated to include the local error files. + +2001-06-06 Werner Lemberg + + * src/cid/cidtokens.h: Replaced with... + * src/cid/cidtoken.h: This file for 8+3 consistency. + + * src/raster/ftraster.c: Use macros for header file names. + + * src/include/freetype/tttables.h (TT_HoriHeader_, TT_VertHeader_): + Fix length of `Reserved' array. Note that this isn't the real fix + since recent OpenType specs have introduced a `CaretOffset' field + instead of the first reserved byte. + +2001-05-29 Werner Lemberg + + * INSTALL: Minor fixes. + + + * Version 2.0.3 released. + ========================= + + +2001-05-29 David Turner + + * INSTALL, docs/CHANGES: Updated. + +2001-05-25 David Turner + + Moved several documents from the top-level to the `docs' directory. + + * src/base/ftcalc.c (FT_DivFix): Small fix to return value. + +2001-05-16 David Turner + + * src/truetype/ttgload.c (load_truetype_glyph): Fixed a bug in the + composite loader. Spotted by Keith Packard. + * src/base/ftobjs.c (FT_GlyphLoader_Check_Points, + FT_GlyphLoader_Check_Subglyphs): Ditto. + +2001-05-14 David Turner + + Fixed the incorrect blue zone computations, and improved the + composite support. Note that these changes result in improved + rendering, while sometimes introducing their own artefacts. This is + probably the last big change to the autohinter before the + introduction of a complete replacement. + + * src/autohint/ahglobal.c (sort_values): Fix loop. + * src/autohint/ahglyph.c: Removed some obsolete code. + (ah_outline_compute_edges): Modify code to set the ah_edge_round + flag. + (ah_outline_compute_blue_edges): Add code to compute active blue + zones. + * src/autohint/ahhint.c (ah_hinter_glyph_load): Change load_flags + value. + + * src/base/ftcalc.c (FT_DivFix): Fixed a bug in the 64-bit code that + created incorrect scale factors! + (FT_Round_Fix, FT_CeilFix, FT_FloorFix): Minor improvements. + +2001-05-12 Werner Lemberg + + * include/freetype/ftbbox.h: FTBBOX_H -> __FTBBOX_H__. + * include/freetype/fttrigon.h: __FT_TRIGONOMETRY_H__ -> + __FTTRIGON_H__. + Include FT_FREETYPE_H. + Beautified; added copyright. + * src/base/fttrigon.c: Beautified; added copyright. + +2001-05-11 David Turner + + * src/cff/cffparse.c (cff_parse_font_matrix), src/cid/cidload.c + (parse_font_matrix), src/type1/t1load.c (parse_font_matrix): Fixed + the incorrect EM size computation. + + * include/freetype/fttrigon.h, src/base/fttrigon.c: New files, + adding trigonometric functions to the core API (using Cordic + algorithms). + * src/base/ftbase.c, src/base/Jamfile, src/base/rules.mk: Use them. + + * builds/newline: New file. + * builds/top_level.mk, builds/detect.mk: Use it. This fixes + problems with Make on Windows 2000, as well as problems when `make + distclean' is invoked on a non-Unix platform when there is no + `config.mk' in the current directory. + + * builds/freetype.mk: Fixed a problem with object deletions under + Dos/Windows/OS/2 systems. + + Added new directory to hold tools and test programs. + + * docs/docmaker.py, docs/glnames.py: Moved to... + * src/tools/docmaker.py, src/tools/glnames.py: This place. + * src/tools/cordic.py: New file used to compute arctangent table + needed by fttrigon.c. + * src/tools/test_bbox.c, src/tools/test_trig.c: New test files. + + * src/tools/docmaker.py: Improved the script to add the current date + at the footer of each web page (useful to distinguish between + versions). + + * Jamfile: Fixed incorrect HDRMACRO argument. + + * TODO: Removed the cubic arc bbox computation note, since it has been + fixed recently. + * src/base/ftbbox.c (test_cubic_zero): Renamed to... + (test_cubic_extrema): This function. Use `UL' for unsigned long + constants. + + * include/freetype/t1tables.h, include/freetype/config/ftoption.h: + Formatting. + +2001-05-10 David Turner + + * src/base/ftobjs.c (FT_Open_Face): Fixed a small memory leak + which happened when trying to open 0-size font files! + +2001-05-09 Werner Lemberg + + * include/freetype/internal/ftcalc.h: Move declaration of + FT_SqrtFixed() out of `#ifdef FT_LONG64'. + +2001-05-08 Francesco Zappa Nardelli + + * src/pcfdriver.c (PCF_Load_Glyph): Fixed incorrect bitmap width + computation. + +2001-05-08 David Turner + + * docs/docmaker.py: Updated the DocMaker script in order to add + command line options (--output,--prefix,--title), fix the erroneous + line numbers reported during errors and warnings, and other + formatting issues. + + * src/base/ftcalc.c (FT_MulDiv, FT_MulFix, FT_DivFix): Various tiny + fixes related to rounding in 64-bits routines and + pseudo-`optimizations'. + +2001-04-27 David Turner + + * src/base/ftbbox.c (BBox_Cubic_Check): Fixed the coefficient + normalization algorithm (invalid final bit position, and invalid + shift computation). + +2001-04-26 Werner Lemberg + + * builds/unix/config.guess, builds/unix/config.sub: Updated to + latest versions from gnu.org. + + * builds/compiler/gcc-dev.mk: Add `-Wno-long-long' flag. + + * include/freetype/internal/ftcalc.h: Define FT_SqrtFixed() + unconditionally. + * src/base/ftbbox.c: Include FT_INTERNAL_CALC_H. + Fix compiler warnings. + * src/base/ftcalc.c: Fix (potential) compiler warnings. + +2001-04-26 David Turner + + * src/base/ftcalc.c (FT_SqrtFixed): Corrected/optimized the 32-bit + fixed-point square root computation. It is now used even with + 64-bits integers, as it is _much_ faster than calling FT_Sqrt64 :-) + + * src/base/ftbbox.c: Removed invalid `#include FT_BEZIER_H' line. + +2001-04-25 David Turner + + * src/base/ftbbox.c (BBox_Cubic_Check): Rewrote function to use + direct computations with 16.16 values instead of sub-divisions. It + is now slower, but proves a point :-) + + * src/raster/ftraster.c, src/smooth/ftgrays.c, src/base/ftbbox.c: + Fixed the Bézier stack depths. + + * src/base/ftcalc.c (FT_MulFix): Minor rounding fix. + + * builds/beos: Added BeOS-specific files to the old build system + (no changes were necessary to support BeOS in the Jamfile though). + +2001-04-20 David Turner + + * ftconfig.h, ftoption.h: Updated `ftconfig.h' to detect 64-bit int + types on platforms where Autoconf is not available). Also removed + FTCALC_USE_LONG_LONG and replaced it with + FT_CONFIG_OPTION_FORCE_INT64. + + * builds/win32/freetype.dsp: Updated the Visual C++ project file. + Doesn't create a DLL yet. + + * cffgload.c: Removed a compilation warning. + +2001-04-10 Tom Kacvinsky + + * t1load.c (parse_charstrings): Changed code for placing .notdef + glyph into slot 0 so that we no longer have a memory access + violation. + + * t1load.h: In structure T1_Loader, added swap_table (of type + PS_Table) to facilitate placing the .notdef glyph into slot 0. + +2001-04-10 Francesco Zappa Nardelli + + * src/pcf/pcfdriver.c (PCF_Get_Char_Index): Fix return value. + +2001-04-09 Laurence Withers + + * builds/dos/detect.mk: Add support for bash. + +2001-04-05 Werner Lemberg + + * builds/os2/*.mk: These files have been forgotten to update to + the structure of similar makefiles. + * builds/dos/*.mk: Ditto. + * builds/ansi/*.mk: Ditto. + + * builds/win32/win32-def.mk (BUILD): Fix typo. + + * builds/compiler/*.mk (CLEAN_LIBRARY): Don't use NO_OUTPUT. + This is already used in the link_*.mk files. + +2001-04-03 Werner Lemberg + + * src/*/Jamfile: Slight changes to make files more cryptic. + +2001-04-03 Werner Lemberg + + * Jamfile, src/Jamfile, src/*/Jamfile: Formatted. Slight changes + to give files identical structure. + +2001-04-02 Werner Lemberg + + * CHANGES: Reformatted, minor fixes. + * TODO: Updated. + * README: Formatting. + * include/freetype/freetype.h: Formatting. + + * Jamfile: Fix typo. + + * src/cff/cffparse.c: Move error code #defines to... + * include/freetype/internal/cfferrs.h: This file. + * src/cff/cffdrivr.c, src/cff/cffobjs.c, src/cff/cffload.c: Replaced + `FT_Err_*' with `CFF_Err_*'. + * src/cid/cidparse.c: Replaced `FT_Err_*' with `T1_Err_*'. + * src/psaux/psobjs.c, src/psaux/t1decode.c: Ditto. + * src/sfnt/sfobcs.c, src/sfnt/ttload.c: Replaced `FT_Err_*' with + `TT_Err_*'. + * src/truetype/ttgload.c, src/truetype/ttobjs.c: Ditto. + * src/type1/t1gload.c, src/type1/t1load.c, src/type1/t1objs.c, + src/type1/t1parse.c: Replaced `FT_Err_*' with `T1_Err_*'. + + * include/freetype/internal/cfferrs.h: Add + `CFF_Err_Unknown_File_Format'. + * include/freetype/internal/t1errors.h: Add + `T1_Err_Unknown_File_Format'. + * include/freetype/internal/tterrors.h: Add + `TT_Err_Unknown_File_Format'. + + * src/cff/cffload.h: Add `cff_*_encoding' and `cff_*_charset' + references. + * src/psaux/psobjs.c: Include `FT_INTERNAL_TYPE1_ERRORS_H'. + + * src/cff/cffobjs.c (CFF_Init_Face, CFF_Done_Face): Use + FT_LOCAL_DEF. + * src/cid/cidobjs.c (CID_Done_Driver): Ditto. + * src/trutype/ttobjs.c (TT_Init_Face, TT_Done_Face, TT_Init_Size): + Ditto. + * src/type1/t1objs.c (T1_Done_Driver): Ditto. + * src/pcf/pcfdriver.c (PCF_Done_Face): Ditto. + * src/pcf/pcf.h: Use FT_LOCAL for `PCF_Done_Face'. + +2001-04-02 Tom Kacvinsky + + * src/sfnt/ttload.c (TT_Load_Metrics): Fix an improper pointer + dereference. Submitted by Herbert Duerr . + +2001-03-26 Tom Kacvinsky + + * include/freetype/config/ftconfig.h: Changed hexadecimal + constants to use suffix U to avoid problems with HP-UX's c89 + compiler. Submitted by G.W. Lucas . + +2001-03-24 David Turner + + * Jamrules, Jamfile, src/Jamfile, src/*/Jamfile: Adding jamfiles to + the source tree. See www.freetype.org/jam/index.html for details. + + + * Version 2.0.2 released. + ========================= + + +2001-03-20 Werner Lemberg + + * builds/win32/detekt.mk: Fix .PHONY target for Intel compiler. + +2001-03-20 David Turner + + * include/freetype/config/ftheader.h, include/freetype/ftsnames.h: + Renamed `ftnames.h' to `ftsnames.h', and FT_NAMES_H to + FT_SFNT_NAMES_H. + + * docs/docmaker.py: Added generation of INDEX link in table of + contents. + + * INSTALL, docs/BUILD: Updated documentation to indicate that the + compilation process has changed slightly (no more `src' required in + the include path). + + * builds/*/*-def.mk: Changed the objects directory from `obj' to + `objs'. + + * include/freetype/config/ftheader.h: Removed obsolete macros like + FT_SOURCE_FILE, etc. and added cache-specific macro definitions that + were previously defined in . Added comments to + be included in a new API Reference section. + + * src/*/*: Removed the use of FT_SOURCE_FILE, etc. Now, each + component needs to add its own directory to the include path at + compile time. Modified all `rules.mk' and `descrip.mms' + accordingly. + +2001-03-20 Werner Lemberg + + * builds/unix/configure.in: Add $ft_version. + * builds/unix/freetype-config.in: Use it. + * builds/unix/configure: Updated. + +2001-03-19 Tom Kacvinsky + + * src/type1/t1load.c (parse_font_matrix): Assign the units per em + value an unsigned short value, first by shifting right 16 bits, + then by casting the results to FT_UShort. + + * src/cff/cffparse.c (cff_parse_font_bbox): Assign the units per em + value an unsigned short value, first by shifting right 16 bits, + then by casting the results to FT_UShort. + +2001-03-17 David Turner + + * src/cid/cidobjs.c, src/cid/cidload.c, src/pcf/pcfread.c, + src/type1/t1load.c, src/type1/t1objs.c: Added a few casts to remove + compiler warnings in pedantic modes. + + * include/config/ft2build.h, include/config/ftheader.h: The file + `ft2build.h' was renamed to `ftheader.h' to avoid conflicts with the + top-level . + + * include/config/ftheader.h: Added new section describing the #include + macros. + +2001-03-17 Tom Kacvinsky + + * src/cff/cffparse.c (cff_parse_font_bbox): Obtain rounded FT_Fixed + values for the bounding box numbers. + + * src/cff/cffobjs.c (CFF_Init_Face): When processing a CFF/CEF font, + set `root->ascender' (`root->descender') to the integer part of + `root->bbox.yMax' (`root->bbox.yMin', respectively). + +2001-03-16 Tom Kacvinsky + + * src/cff/cffdrivr.c (get_cff_glyph_name): New function. Used in + cff_get_interface to facilitate getting a glyph name for glyph index + via FT_Get_Glyph_Name(). + + (cff_get_interface): Added support for getting a glyph name via the + `glyph_name' module interface. Uses the new function + get_cff_glyph_name(). + Submitted by Sander van der Wal . + + * src/cff/cffobjs.c (CFF_Init_Face): Logical or the face flags with + FT_FACE_FLAG_GLYPH_NAMES only if FT_CONFIG_OPTION_NO_GLYPH_NAMES is + not defined. This is to add support for getting a glyph name from a + glyph index via FT_Get_Glyph_Name(). + Submitted by Sander van der Wal . + + * src/cff/cffgload.c (CFF_Parse_CharStrings): Added support for + deprecated operator `dotsection'. + Submitted by Sander van der Wal . + +2001-03-12 Werner Lemberg + + * src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings): Fix error + messages. + + * INSTALL, docs/BUILD: We need GNU make 3.78.1 or newer. + +2001-03-12 Tom Kacvinsky + + * include/freetype/internal/psaux.h: Changed the lenIV member of + the T1_Decoder_ struct to be an FT_Int instead of an FT_UInt. + + * src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings): Adjust + for lenIV seed bytes at the start of a decrypted subroutine. + + * src/cid/cidload.c (cid_read_subrs): Decrypt subroutines only + if lenIV >= 0. + + * src/cid/cidgload.c (cid_load_glyph): Decrypt charstrings only + if lenIV >= 0. + +2001-03-11 Werner Lemberg + + * TODO: Updated. + + * src/pcf/pcfread.c: Put READ_Fields() always in a conditional to + avoid compiler warnings. + +2001-03-10 Tom Kacvinsky + + * TODO: New file. + + * include/freetype/freetype.h: Added prototypes and notes for + three new functions: FT_RoundFix, FT_CeilFix, and FT_FloorFix. + * src/base/ftcalc.c (FT_RoundFix, FT_CeilFix, FT_FloorFix): Added + implementation code. + + * src/cid/cidobjs.c (CID_Init_Face): Use calculated units_per_EM, + and if that is not available, default to 1000 units per EM. Changed + assignment code for ascender and descender values. + * src/cid/cidload.c (parse_font_matrix): Added units_per_EM + processing. + (parse_font_bbox): Changed to use FT_Fixed number handling. + + * src/type1/t1objs.c (T1_Init_Face): Changed the assignment code + for ascender, descender, and max_advance_width. + * src/type1/t1load.c (parse_font_bbox): Changed to use FT_Fixed + number handling. + +2001-03-10 Henrik Grubbström + + * src/*/*.c: Added many casts to make code more 64bit-safe. + +2001-03-07 Werner Lemberg + + * INSTALL, docs/BUILD: We need GNU make 3.78 or newer. + +2001-03-07 Tom Kacvinsky + + * src/type1/t1objs.c (T1_Init_Face): Minor correction: We must wait + until parse_font_bbox is changed before we use logical shift rights + in the assignments of `root->ascender', `root->descender', and + `root->max_advance_width'. + + (T1_Done_Face): Free `char_name' table to avoid a memory leak. + Submitted by Sander van der Wal . + +2001-03-05 Tom Kacvinsky + + * src/cff/cffgload.c (CFF_Load_Glyph): Set glyph control data to the + the Type 2 glyph charstring (used by conversion programs). + Submitted by Ha Shao . + +2001-03-04 Antoine Leca + + * include/freetype/ttnameid.h: Correct a stupid typo which prevented + correct compilation (TT_MS_LANGID_TIGRIGNA_ETHIOPIA appeared twice). + +2001-03-04 Werner Lemberg + + * src/autohint/ahtypes.h (AH_Hinter): Add elements + `disable_horz_edges', `disable_vert_edges'. + * src/autohint/ahhint.c (ah_hint_edges_3, ah_hinter_hint_edges): Use + them (and remove static variables with the same names). + * src/pcf/pcfutil.c (BitOrderInvert): Add `const'. + * docs/glnames.py: Updated to latest pstables.h changes. + + * builds/unix/detect.mk: Add test for Hurd. + * builds/hurd/detect.mk: Removed. + +2001-03-04 Sander van der Wal + + * src/psnames/pstables.h: Add more `const'. + * src/pcf/pcfutil.c: Ditto. + +2001-03-04 Werner Lemberg + + * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Fixing typo + (FT_Glyph_Done -> FT_Done_Glyph). + +2001-03-01 Antoine Leca + + * include/freetype/ttnameid.h: Added some new Microsoft language + codes and LCIDs as found in Office Xp. + +2001-02-28 David Turner + + * builds/hurd/detect.mk: New file. Added support to detect the GNU + Hurd operating system as Unix-like. Fix submitted by Anthony Fok + . + + * src/type1/t1gload.c (T1_Load_Glyph): Set glyph control data to the + the Type 1 glyph charstring (used by conversion programs). + Submitted by Ha Shao . + +2001-02-22 David Turner + + * src/base/ftgrays.c (grays_sweep): The function didn't exit + immediately if `num_cells' was 0 as it should. Thanks to Boris for + finding this out. + + * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Fixed memory leak when + bitmap rendering fails (thanks to Graham Asher). + +2001-02-13 Werner Lemberg + + * docs/docmaker.py (DocSection::add_element): Use + `self.print_error()'. + + * builds/unix/config.{guess,sub}: Updated (from ftp.gnu.org). + +2001-02-13 David Turner + + * docs/docmaker.py, include/freetype/*.h: Updated the DocMaker + script to support chapters and section block ordering. Updated the + public header files accordingly. + + * src/base/ftglyph.c (FT_Glyph_Copy): Advance width and glyph format + were not correctly copied. + +2001-02-08 Tom Kacvinsky + + * src/cff/cffparse.c (cff_parse_font_matrix): Removed an + unnecessary fprintf( stderr, ... ). + +2001-02-07 Tom Kacvinsky + + * src/type1/t1objs.c (T1_Init_Face): Added code to get the + units_per_EM from the value assigned in parse_font_matrix, if + available. Default to 1000 if not available. + + * src/cff/cffparse.c (cff_parse_font_matrix): Added logic to get + the units_per_EM from the FontMatrix. + + (cff_parse_fixed_thousand): New function. Gets a real number from + the CFF font, but multiplies by 1000 (this is to avoid rounding + errors when placing this real number into a 16.16 fixed number). + + (cff_parse_real): Added code so that the integer part is moved + into the high sixteen bits of the 16.16 fixed number. + + * src/cff/cffobjs.c (CFF_Init_Face): Added logic to get the units + per EM from the CFF dictionary, if available. + + * include/freetype/internal/cfftypes.h: In struct CFF_Font_Dict_, + added a units_per_em member to facilitate passing of units_per_em + from function cff_parse_font_matrix. + + * src/type1/t1load.c (is_alpha): Make `-' a legal alphanumeric + character. This is so that font names with `-' are fully parsed, + etc... + +2001-02-02 Werner Lemberg + + * src/psaux/psobjs.c (shift_elements): Remove if clause (which is + obsolete now). + + (reallocate_t1_table, PS_Table_Done): Replace REALLOC() with ALLOC() + + MEM_Copy() to avoid a memory bug. + +2001-02-01 David Turner + + * docs/docmaker.py: Improved the index sorting routine to place + capital letters before small ones. Added the `' marker to + section blocks in order to give the order of blocks. + +2001-01-30 Antoine Leca + + * include/freetype/ttnameid.h: Latest updates to Microsoft language + ID codes. + +2001-01-24 Tom Kacvinsky + + * src/cff/t1load.c (parse_font_matrix): Added heuristic to get + units_per_EM from the font matrix. + + (parse_dict): Deleted test to see whether the FontInfo keyword has + been seen. Deletion of this test allows fonts without FontInfo + dictionaries to be parsed by the Type 1 driver. + + (T1_Open_Face): Deleted empty subroutines array test to make sure + fonts with no subroutines still are parsed. + +2001-01-17 Francesco Zappa Nardelli + + * src/pcfread.c (pcf_get_properties, pcf_get_metrics, + pcf_get_bitmaps): Fix compiler errors. + +2001-01-11 David Turner + + * src/pcf/pcfread.c: Removed some compilation warnings related + to comparison of signed vs. unsigned integers. + + * include/freetype/internal/ftdebug.h: Changed the debug trace + constants from trace_t2xxxx to trace_cffxxxx to be able to compile + the CFF driver in debug mode. + +2001-01-11 Matthew Crosby + + * builds/unix/freetype-config.in: Fix problems with separate + --prefix and --exec-prefix. + +2001-01-11 David Turner + + * docs/docmaker.py: Added cross-references generation as well as + more robust handling of pathname wildcard matching. + +2001-01-10 Werner Lemberg + + * docs/docmaker.py: Minor improvements to reduce unwanted spaces + and empty lines in output. + +2001-01-09 David Turner + + * docs/docmaker.py: Improved script to generate table of contents + and index pages. It also supports wildcards on non Unix systems. + + * include/freetype/*.h, include/freetype/cache/*.h: Updated comments + to include section definitions/delimitations for the API Reference + generator. + + * include/freetype/freetype.h: Moved declaration of + `FT_Generic_Finalizer' and the `FT_Generic' structure to... + * include/freetype/fttypes.h: here. + +2001-01-04 Werner Lemberg + + * include/freetype/ttnameid.h: Updated Unicode code range comments. + +2001-01-03 Tom Kacvinsky + + * src/cff/rules.mk: Use cffgload.{c,h} instead of t2gload.{c,h}. + + * include/freetype/internal/internal.h: Changed to use cfftypes.h + (cfferrs.h) instead of t2types.h (t2errors.h, respectively). + + * include/freetype/internal/cfftypes.h: Merged in changes from + t2types.h and made this the canonical `types' header for the CFF + driver. + + * include/freetype/internal/t2types.h: This file was merged with + cfftypes.h and is no longer necessary. + + * include/freetype/internal/t2errors.h: Renamed to cfferrs.h. + + * src/cff/cffobjs.c, src/cff/cffobjs.h, src/cff/cffparse.c, + src/cff/cffdrivr.c, src/cff/cff.c, src/cff/cffload.c, + src/cff/cffgload.c, src/cff/cffgload.h: Changed to use + cffgload.{c,h} instead of t2gload.{c,h}. All occurrences of t2_ + (T2_) were replaced with cff_ (CFF_, respectively). + + * src/cff/t2gload.h: Renamed cffgload.h. + + * src/cff/t2gload.c: Renamed cffgload.c + +2000-01-02 Jouk Jansen + + * builds/vms: Support files for VMS architecture added. + * descrip.mms, src/*/descrip.mms: VMS makefiles added. + * README.VMS: New file. + +2000-01-01 Werner Lemberg + + * LICENSE.TXT: Added info about PCF driver license. + +2001-01-01 Francesco Zappa Nardelli + + * src/pcf/*: New driver module for PCF font format (used in + X Window System). + * include/freetype/internal/ftdebug.h (FT_Trace): Added values for + PCF driver. + * include/freetype/internal/pcftypes.h: New file. + * include/freetype/config/ftmodule.h: Added PCF driver module. + +2001-01-01 Werner Lemberg + + * src/winfonts/winfnt.c (FNT_Get_Char_Index): Fix parameter type. + +2000-12-31 Werner Lemberg + + * builds/modules.mk (clean_module_list): Fixed deletion of module + file in case `make make_module_list' is called before `make setup'. + +2000-12-30 Werner Lemberg + + * src/cff/cffload.c (CFF_Load_Charset): Improved error messages. + (CFF_Load_Charset, CFF_Load_Encoding): Remove unnecessary variable + definition. + +2000-12-30 Tom Kacvinsky + + * include/freetype/internal/t2types.h, + include/freetype/internal/cfftypes.h: Changed the structures for + CFF_Encoding and CFF_Encoding for the new implementations of the + charset and encoding parsers in the CFF driver. + + * src/cff/t2gload.c (t2_lookup_glyph_by_stdcharcode, + t2_operator_seac): Added these functions for use in implementing the + seac emulation provided by the Type 2 endchar operator. + (T2_Parse_CharStrings): Added seac emulation for the endchar + operator. + + * src/cff/cffload.c (CFF_Load_Encoding, CFF_Load_Charset, + CFF_Done_Encoding, CFF_Done_Charset): Extended to load and parse the + charset/encoding tables, and free the memory used by them when the + CFF driver is finished with them. Added tables + + cff_isoadobe_charset + cff_expert_charset + cff_expertsubset_charset + cff_standard_encoding + cff_expert_encoding + + so that the encoding/charset parser can handle predefined encodings and + charsets. + +2000-12-24 Tom Kacvinsky + + * src/cff/t2gload.c (T2_Load_Glyph): Added code so that the font + transform is applied. + + * src/cff/cffparse.c (cff_parse_font_matrix): Added code so that + the font matrix numbers are scaled by 1/(matrix->yy). Also, the + offset vector now contains integer values instead of 16.16 fixed + numbers. + +2000-12-22 Tom Kacvinsky + + * src/autohint/ahhint.c (ah_hinter_load_glyph): + Removed unnecessary comments and commented-out code. + +2000-12-21 David Turner + + * src/cid/cidafm.c, src/cid/cidafm.h: removed un-needed files, + we'll work on supporting CID AFM files later I guess :-) + +2000-12-21 Tom Kacvinsky + + * src/autohint/ahhint.c (ah_hinter_load, ah_hinter_load_glyph): + Changed so that fonts with a non-standard FontMatrix render + correctly. Previously, the first glyph rendered from such a + font did not have the transformation matrix applied. + +2000-12-17 Werner Lemberg + + * *.mk: Added lots of `.PHONY' targets. + +2000-12-17 Karsten Fleischer + + * *.mk: Implemented `platform' target to disable auto-detection. + +2000-12-14 Werner Lemberg + + * docs/design/modules.html: Removed. Covered by design-*.html. + + * INSTALL: Added info about makepp. + +2000-12-14 David Turner + + Added support for clipped direct rendering in the smooth renderer. + This should not break binary compatibility of existing applications. + + * include/freetype/fttypes.h, include/freetype/ftimage.h: Move + definition of the FT_BBox structure from the former to the latter. + * include/freetype/ftimage.h: Add `ft_raster_flag_clip' value to + FT_Raster_Flag enumeration. + Add `clip_box' element to FT_Raster_Params structure. + * src/smooth/ftgrays.c (grays_convert_glyph): Implement it. + + * INSTALL: Updated installation instructions on Win32, listing the + new `make setup list' target used to list supported + compilers/targets. + + * src/raster/ftraster.c (ft_black_render): Test for unsupported + direct rendering before testing arguments. + +2000-12-13 David Turner + + * include/freetype/config/ft2build.h, + include/freetype/internal/internal.h: Fixed header inclusion macros + to use direct definitions. This is the only way to do these things + in a portable way :-( The rest of the code should follow shortly + though everything compiles now. + + * builds/compiler/intelc.mk, builds/compiler/watcom.mk: New files. + + * builds/win32/detect.mk: Added support for the Intel C/C++ + compiler, as well as _preliminary_ (read: doesn't work!) support for + Watcom. Also added a new setup target. Type `make setup list' for + a list of supported command-line compilers on Win32. + + * src/base/ftdebug.c: Added dummy symbol to avoid empty file if + conditionals are off. + +2000-12-13 Werner Lemberg + + * builds/unix/ftsystem.c: Fixed typos. Fixed inclusion of wrong + ftconfig.h file. + +2000-12-12 Werner Lemberg + + * include/freetype/config/ft2build.h (FT2_ROOT, FT2_CONFIG_ROOT): + Removed. ANSI C doesn't (explicitly) allow macro expansion in + arguments using `##'. + (FT2_PUBLIC_FILE, FT2_CONFIG_FILE, FT2_INTERNAL_FILE): Use directory + names directly. Make them configurable. Use `##' to strip leading + and trailing spaces from arguments. + + * builds/unix/ft2unix.h: Adapted. + + * src/base/ftsystem.c (ft_alloc, ft_realloc, ft_free, ft_io_stream, + ft_close_stream): Use FT_CALLBACK_DEF. + + * builds/unix/ftsystem.c: Use new header scheme. + (FT_Done_Memory): Use free() from FT_Memory structure. + + * src/base/ftinit.c, src/base/ftmac.c: Header scheme fixes. + +2000-12-11 Werner Lemberg + + * include/freetype/config/ft2build.h (FT2_CONFIG_ROOT, + FT2_PUBLIC_FILE, FT2_CONFIG_FILE, FT2_INTERNAL_FILE, + FT_SOURCE_FILE): Use `##' operator to be really ANSI C compliant. + +2000-12-09 Werner Lemberg + + * builds/unix/detect.mk: Remove unused USE_CFLAGS variable. + +2000-12-08 Werner Lemberg + + * */*.h: Changed body inclusion macro names to start and end with + `__' (those which haven't converted yet). Fixed minor conversion + issues. + + * src/winfonts/winfnt.c: Updated to new header inclusion scheme. + + * src/truetype/ttinterp.c: Remove unused CALC_Length() macro. + +2000-12-07 David Turner + + * */*.[ch]: Changed source files to adhere to the new + header inclusion scheme. Not completely tested but works for now + here. + + * src/cff/t2driver.c: Renamed and updated to... + * src/cff/cffdrivr.c: New file. + * src/cff/t2driver.h: Renamed and updated to... + * src/cff/cffdrivr.h: New file. + * src/cff/t2load.c: Renamed and updated to... + * src/cff/cffload.c: New file. + * src/cff/t2load.h: Renamed and updated to... + * src/cff/cffload.h: New file. + * src/cff/t2objs.c: Renamed and updated to... + * src/cff/cffobjs.c: New file. + * src/cff/t2objs.h: Renamed and updated to... + * src/cff/cffobjs.h: New file. + * src/cff/t2parse.c: Renamed and updated to... + * src/cff/cffparse.c: New file. + * src/cff/t2parse.h: Renamed and updated to... + * src/cff/cffparse.h: New file. + * src/cff/t2tokens.h: Renamed and updated to... + * src/cff/cfftoken.h: New file. + + * src/cff/cff.c, src/cff/rules.mk: Updated. + +2000-12-06 David Turner + + * src/cache/ftlru.c (FT_Lru_Done): Fixed memory leak. + +2000-12-06 Werner Lemberg + + * builds/module.mk: Replaced `xxx #' with `xxx$(space). + * builds/os2/detekt.mk, builds/win32/detekt.mk: Moved comment to + avoid trailing spaces in variable. + * builds/freetype.mk: Use $(D) instead of $D to make statement more + readable. + + * docs/docmaker.py: Formatting. + +2000-12-05 David Turner + + * src/psaux/psauxmod.c: Fixed a broken inclusion of component + header files (an FT_FLAT_COMPILE test was missing). + + * src/cache/ftcmanag.c (FTC_Manager_Done): Fixed a bug that caused + an occasional crash when the function was called (due to a dangling + pointer). + + * src/base/ftsystem.c (FT_Done_Memory): Fixed an obvious bug: + The ANSI `free()' function was called instead of `memory->free()'. + + * docs/docmaker.py: Added section filtering, multi-page generation + (index page generation is still missing though). + +2000-12-04 David Turner + + * builds/unix/install.mk, builds/unix/ft2unix.h: The file `ft2unix.h' + is now installed as for Unix systems. Note that we + still use the `freetype2/freetype' installation path for now. + + * */*.[ch]: Now using as the default build and setup + configuration file in all public headers. Internal source files + still need some changes though. + + * builds/devel/ft2build.h, builds/devel/ftoption.h: Created a new + directory to hold all development options for both the Unix and + Win32 developer builds. + + * builds/win32/detect.mk, builds/win32/w32-bccd.mk, + builds/win32/w32-dev.mk: Changed the developer build targets to + `devel-gcc' and `devel-bcc' in order to be able to develop with the + Borland C++ compiler. + +2000-12-01 David Turner + + + * Version 2.0.1 released. + ========================= + + + * builds/unix/configure.in, builds/unix/configure, + builds/cygwin/configure.in, builds/cygwin/configure: Setting + `version_info' to 6:1:0 for the 2.0.1 release. + + * CHANGES: Added a summary of changes between 2.0.1 and 2.0. + + * builds/unix/ftconfig.in, builds/cygwin/ftconfig.in: Changes + to allow compilation under Unix with the Unix-specific config + files. + +2000-12-01 Werner Lemberg + + * INSTALL: Revised. + * builds/compiler/bcc-dev.mk, builds/compiler/visualage.mk, + builds/compiler/bcc.mk, builds/win32/w32-bcc.mk, + builds/win32/w32-bccd.mk: Revised. + * include/freetype/config/ftbuild.h, + include/freetype/internal/internal.h: Revised. + * include/freetype/ftimage.h: Updated to new header inclusion scheme. + +2000-11-30 Werner Lemberg + + * builds/toplevel.mk (.PHONY): Adding `distclean'. + * builds/unix/detect.mk (.PHONY): Adding `devel', `unix', `lcc', + `setup'. + +2000-11-30 David Turner + + * INSTALL: Slightly updated the quick starter documentation to + include IDE compilation, prevent against BSD Make, and specify `make + setup' instead of a single `make' for build configuration. + + * include/config/ftbuild.h, include/internal/internal.h: Added new + configuration files used to determine the location of all public, + configuration, and internal header files for FreeType 2. Modified + all headers under `include/freetype' to reflect this change. Note + that we still need to change the library source files themselves + though. + + * builds/compiler/bcc.mk, builds/compiler/bcc-dev.mk, + builds/win32/w32-bcc.mk, builds/win32/w32-bccd.mk, + builds/win32/detect.mk: Added new files to support compilation with + the free Borland C++ command-line compiler. Modified the detection + rules to recognize the new `bcc32' target in `make setup bcc32'. + + * src/sfnt/ttcmap.c, src/sfnt/ttpost.c, src/sfnt/ttsbit.c, + src/truetype/ttobjs.c, src/truetype/ttgload.c, + src/truetype/ttinterp.c: Fixed a few comparisons that Borland C++ + didn't really like. Basically, this compiler complains when FT_UInt + is compared to FT_UShort (apparently, it promotes `UShort' to `Int' + in these cases). + +2000-11-30 Tom Kacvinsky + + * t2objs.c (T2_Init_Face): Added calculation of `face->height' for + pure CFF fonts. + + * t1objs.c (T1_Init_Face): Fixed computation of `face->height'. + +2000-11-29 David Turner + + * src/base/ftbbox.c (BBox_Conic_Check): Fixed a really stupid + bug in the formula used to compute the conic Bézier extrema + of non-monotonous arcs. + +2000-11-29 Werner Lemberg + + * src/base/ftcalc.c (FT_SqrtFixed), src/base/ftobjs.c + (FT_Set_Renderer): Use FT_EXPORT_DEF. + * src/cache/ftcimage.c (FTC_Image_Cache_Lookup), + src/cache/ftcmanag.c (FTC_Manager_Done, FTC_Manager_Reset, + FTC_Manager_Lookup_Face, FTC_Manager_Lookup_Size, + FTC_Manager_Register_Cache), src/cache/ftcsbits.c + (FTC_SBit_Cache_Lookup): Ditto. + + * src/include/freetype/cache/ftcglyph.h (FTC_GlyphNode_Init), + src/include/freetype/ftmac.h (FT_New_Face_From_FOND): Use FT_EXPORT. + +2000-11-29 Werner Lemberg + + * src/sfnt/sfdriver.c: Include ttsbit.h and ttpost.h only + conditionally. + + * src/truetype/ttdriver.c (Set_Char_Sizes, Set_Pixel_Sizes): Set + `size->strike_index' only conditionally. + + * src/type1/t1driver.c, src/type1/t1objs.c: Include t1afm.h only + conditionally. + + * src/winfonts/winfnt.h: Move all type definitions to... + * src/include/freetype/internal/fnttypes.h: New file. + * src/winfonts/winfnt.c: Use it. + +2000-11-29 ??? ??? + + * include/freetype/internal/ftdebug.h: Replaced FT_CAT and FT_XCAT + with a direct solution (which also satisfies picky compilers). + +2000-11-28 YAMANO-UCHI Hidetoshi + + * src/truetype/ttobjs.c (TT_Init_Size): Fix #ifdef's to work with + disabled interpreter also. + + * src/base/ftnames.c (FT_Get_Sfnt_Name_Count): Fix incorrect + parentheses. + +2000-11-26 Tom Kacvinsky + + * src/cff/t2gload.c (T2_Parse_CharStrings): Added logic to glyph + width setting code to take into account even/odd argument counts + and glyph width operand before endchar/hmoveto/vmoveto. + +2000-11-26 Werner Lemberg + + * builds/ansi/ansi.mk: Fix inclusion order of files. + +2000-11-26 Keith Packard + + * src/type1/t1objs.c (T1_Init_Face): Compute style flags. + +2000-11-26 Werner Lemberg + + * builds/compiler/ansi-cc.mk (CLEAN_LIBRARY): Fix rule and + conditional. + +2000-11-23 Werner Lemberg + + * src/type1/t1load.c (parse_subrs, parse_charstrings): Use decrypt + function from PSAux module. + + * src/type1/t1parse.c (T1_Done_Parse): Renamed to... + (T1_Finalize_Parser): New function (to avoid name clash with a + function in the PSAux module). + (T1_Decrypt): Removed since it is duplicated in the PSAux module. + (T1_Get_Private_Dict): Added `psaux' as new parameter; use decrypt + function from PSAux module. + + * src/type1/t1parse.h: Adapted. + +2000-11-22 Tom Kacvinsky + + * src/cff/t2objs.c (T2_Init_Face): For pure CFF fonts, set + `root->num_faces' to `cff->num_faces' and set `units_per_EM' + to 1000. + + * src/cff/t2parse.c (parse_t2_real): Fixed real number parsing + loop. + + * src/cff/t2load.c (T2_Get_String): Called T2_Get_Name with a + sid that was off by one. + +2000-11-16 David Turner + + * src/autohint/ahtypes.h (AH_Hinter): Added new fields to control + auto-hinting of synthetic Type 1 fonts. + + * src/autohint/ahhint.c (ah_hinter_load, ah_hinter_load_glyph): + Added auto-hinting support of synthetic Type 1 fonts. + +2000-11-12 Tom Kacvinsky + + * src/sfnt/ttload.c (TT_LookUp_Table, TT_Load_Generic_Table): Change + tracing output. + + * src/sfnt/sfobjs.c (SFNT_Load_Face): Set boolean variable + `has-outline' to true only if the font has a `glyf' or `CFF ' table. + +2000-11-11 Werner Lemberg + + * builds/win32/visualc/freetype.dsp: Fix raster1->raster and + type1z->type1. + +2000-11-11 Tom Kacvinsky + + * builds/unix/freetype-config.in, builds/cygwin/freetype-config.in: + Added a --libtool option. When freetype-config --libtool is + invoked, the absolute path to the libtool convenience library + is returned. + +2000-11-11 Werner Lemberg + + * builds/cygwin/cygwin-def.in: Same fix as previous. + +2000-11-10 Tom Kacvinsky + + * builds/unix/unix-def.in: Add + + INSTALL_PROGRAM := @INSTALL_PROGRAM@ + INSTALL_SCRIPT := @INSTALL_SCRIPT@ + + so that installation of freetype-config does not fail. + +2000-11-10 Werner Lemberg + + * builds/cygwin/freetype-config.in, builds/unix/freetype-config.in: + Move test down for empty --exec-prefix. + Fix --version. + + * builds/cygwin/install.mk, builds/unix/install.mk: Use + $(INSTALL_SCRIPT) for installation of freetype-config. + + * builds/cygwin/install.mk: Fix clean target names. + +2000-11-09 David Turner + + + * Version 2.0 released. + ======================= + +---------------------------------------------------------------------------- + +Copyright 2000-2015 by +David Turner, Robert Wilhelm, and Werner Lemberg. + +This file is part of the FreeType project, and may only be used, modified, +and distributed under the terms of the FreeType project license, +LICENSE.TXT. By continuing to use, modify, or distribute this file you +indicate that you have read the license and understand and accept it +fully. + + +Local Variables: +version-control: never +coding: utf-8 +End: diff --git a/libs/freetype/ChangeLog.21 b/libs/freetype/ChangeLog.21 new file mode 100644 index 00000000..5ee9909f --- /dev/null +++ b/libs/freetype/ChangeLog.21 @@ -0,0 +1,9439 @@ +2005-06-08 Werner Lemberg + + + * Version 2.1.10 released. + ========================== + + + * src/pcf/readme: Renamed to... + * src/pcf/README: This. + +2005-06-07 Detlef Würkner + + * builds/amiga/*: Added copyright notes, reworked some comments. + +2005-06-05 Werner Lemberg + + * Add copyright notices to all files which don't have one. + + * docs/license.txt: Renamed to... + * docs/LICENSE.TXT: This. + * docs/FTL.txt: Renamed to... + * docs/FTL.TXT: This. + * docs/GPL.txt: Renamed to... + * docs/GPL.TXT: This. + + * docs/PATENTS: Slightly reworded. Suggested by Sylvain Beucler + . + +2005-06-04 Werner Lemberg + + * include/freetype/ftimage.h (FT_Outline_MoveToFunc, + FT_Outline_LineToFunc, FT_Outline_ConicToFunc, + FT_Outline_CubicToFunc, FT_Raster_RenderFunc), + include/freetype/ftrender.h (FT_Glyph_TransformFunc, + FT_Renderer_RenderFunc, FT_Renderer_TransformFunc): Don't use + `const' to stay compatible with FreeType 2.1.9. + +2005-06-01 Adam D. Moss + + * src/base/ftstroke.c (ft_stroker_inside): Revert `sigma' patch from + 2004-07-11; this gives much better results under normal + circumstances. + +2005-05-30 Chia I Wu + + * include/freetype/ftbitmap.h (FT_Bitmap_Embolden): Minor + documentation improvements. + + * include/freetype/ftoutln.h (FT_Outline_Embolden): Fix typos. + + * src/base/ftbitmap.c (FT_Bitmap_Embolden): Add support for bitmap + of pixel_mode FT_PIXEL_MODE_GRAY2 or FT_PIXEL_MODE_GRAY4. + If xstr is larger than 8 and bitmap is of pixel_mode + FT_PIXEL_MODE_MONO, set xstr to 8 instead of returning error. + +2005-05-29 Chia I Wu + + * src/base/ftbitmap.c (FT_Bitmap_Embolden): Fix emboldening bitmap + of mode FT_PIXEL_MODE_GRAY. Also add support for mode + FT_PIXEL_MODE_LCD and FT_PIXEL_MODE_LCD_V. + (ft_bitmap_assure_buffer): FT_PIXEL_MODE_LCD and FT_PIXEL_MODE_LCD_V + should have ppb (pixel per byte) 1. + Zero the padding when there's no need to allocate memory. + + * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Handle slot->advance + too. + More suited emboldening strength. + +2005-05-28 Chia I Wu + + * src/base/ftbitmap.c (FT_Bitmap_Embolden): Handle negative pitch. + Handle FT_PIXEL_MODE_GRAY with num_gray != 256. + Improve speed for FT_PIXEL_MODE_GRAY. + (ft_bitmap_assure_buffer): Accept FT_PIXEL_MODE_LCD and + FT_PIXEL_MODE_LCD_V. + +2005-05-27 Chia I Wu + + * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Initialize `error'. + + * src/base/ftobjs.c (ft_cmap_done_internal): New function. + (FT_CMap_Done): Remove cmap from cmap list. + (destroy_charmaps, FT_CMap_New): Don't call FT_CMap_Done but + ft_cmap_done_internal. + +2005-05-26 Werner Lemberg + + * docs/GPL.txt: Update postal address of FSF. + +2005-05-26 Chia I Wu + + * include/freetype/ftbitmap.h (FT_Bitmap_Embolden): Improve + documentation. + + * src/base/ftsynth.c (FT_BOLD_THRESHOLD): Removed. + (FT_GlyphSlot_Embolden): Check whether slot is bitmap owner. + Always modify the metrics. + +2005-05-24 Werner Lemberg + + * docs/CHANGES: Updated. + +2005-05-24 Chia I Wu + + * include/freetype/ftbitmap.h (FT_Bitmap_Embolden): New declaration. + + * include/freetype/ftoutln.h (FT_Outline_Embolden): New declaration. + + * src/base/ftbitmap.c (ft_bitmap_assure_buffer): New auxiliary + function. + (FT_Bitmap_Embolden): New function. + + * src/base/ftoutln.c (FT_Outline_Embolden): New function. + + * src/base/ftsynth.c: Don't include FT_INTERNAL_CALC_H and + FT_TRIGONOMETRY_H but FT_BITMAP_H. + (FT_GlyphSlot_Embolden): Use FT_Outline_Embolden or + FT_Bitmap_Embolden. + +2005-05-24 Werner Lemberg + + * configure: Always remove config.mk, builds/unix/unix-def.mk, and + builds/unix/unix-cc.mk. This fixes repeated calls of the script. + Reported by Nelson Beebe and Behdad Esfahbod. + + * README.CVS: Mention file permissions. + +2005-05-23 Werner Lemberg + + * builds/amiga/makefile.os4 (WARNINGS), builds/compiler/gcc-dev.mk + (CFLAGS), builds/compiler/gcc.mk (CFLAGS): Remove + -fno-strict-aliasing. + + * src/sfnt/rules.mk (SFNT_DRV_SRC): Don't include ttsbit0.c -- + it is currently loaded from ttsbit.c. + +2005-05-23 Behdad Esfahbod + + Say you have `(Foo*)x' and want to assign, pass, or return it as + `(Bar*)'. If you simply say `x' or `(Bar*)x', then the C compiler + would warn you that type casting incompatible pointer types breaks + strict-aliasing. The solution is to cast to `(void*)' instead which + is the generic pointer type, so the compiler knows that it should + make no strict-aliasing assumption on `x'. But the problem with + `(void*)x' is that seems like in C++, unlike C, `void*' is not a + generic pointer type and assigning `void*' to `Bar*' without a cast + causes an error. The solution is to cast to `Bar*' too, with + `(Bar*)(void*)x' as the result -- this is what the patch does. + + * include/freetype/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP), + include/freetype/cache/ftcmru.h (FTC_MRULIST_LOOKUP_CMP): Remove + cast on lvalue, use a temporary pointer instead. + Cast temporarily to (void*) to not break strict aliasing. + + * include/freetype/internal/ftmemory.h (FT_MEM_ALLOC, + FT_MEM_REALLOC, FT_MEM_QALLOC, FT_MEM_QREALLOC, FT_MEM_FREE), + src/base/ftglyph.c (FT_Glyph_To_Bitmap): Cast temporarily to (void*) + to not break strict aliasing. + + * src/base/ftinit.c (FT_USE_MODULE): Fix wrong type information. + + * builds/unix/configure.ac (XX_CFLAGS): Remove -fno-strict-aliasing. + +2005-05-23 David Turner + + Fix Savannah bug #12213 (incorrect behaviour of the cache sub-system + in low-memory conditions). + + * include/freetype/cache/ftccache.h (FTC_CACHE_TRYLOOP, + FTC_CACHE_TRYLOOP_END): New macros. + + * src/cache/ftccache.c (FTC_Cache_NewNode), src/cache/ftcsbits.c + (ftc_snode_compare): Use FT_CACHE_TRYLOOP and FTC_CACE_TRYLOOP_END. + +2005-05-23 Werner Lemberg + + * src/base/rules.mk (BASE_SRC): Don't add ftsynth.c here but... + (BASE_EXT_SRC): Here. + +2005-05-22 Werner Lemberg + + * src/base/ftrfork.c (raccess_guess_apple_generic): Mark + `version_number' and `entry_length' as unused. + (raccess_guess_linux_double_from_file_name): Remove `memory'. + (raccess_make_file_name): Mark `error' as unused. + + * src/bdf/bdflib.c (_bdf_parse_properties): Remove `memory'. + + * src/cid/cidobjs.c (cid_face_init): Remove `psnames'. + + * src/sfnt/sfobjs.c (sfnt_load_face): Remove `memory'. + + * src/truetype/ttgxvar.c (ft_var_readpackedpoints, + ft_var_readpackeddeltas, ft_var_load_avar): Mark `error' as unused. + + * src/base/rules.mk (BASE_SRC): Add ftsynth.c. + +2005-05-21 David Turner + + * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Fix a bug that + produced unpleasant artefacts when trying to embolden very sharp + corners. + +2005-05-20 Werner Lemberg + + * docs/CHANGES: Updated. + +2005-05-20 Chia I Wu + + * src/base/ftbitmap.c: Don't include FT_FREETYPE_H and FT_IMAGE_H + but FT_BITMAP_H. + (FT_Bitmap_Copy): New function (from ftglyph.c). + + * include/freetype/ftbitmap.h (FT_Bitmap_Copy): New public + definition. + + * src/base/ftglyph.c: Include FT_BITMAP_H. + (ft_bitmap_copy): Move to ftbitmap.c. + (ft_bitmap_glyph_init): Remove `memory' variable. + Create new bitmap object if FT_GLYPH_OWN_BITMAP isn't set. + (ft_bitmap_glyph_copy): Use FT_Bitmap_Copy. + (ft_bitmap_glyph_done): Use FT_Bitmap_Done. + (ft_outline_glyph_init): Use FT_Outline_Copy. + + * src/base/ftoutln.c (FT_Outline_Copy): Handle source == target. + (FT_Outline_Done_Internal): Check for valid `memory' pointer. + (FT_Outline_Translate, FT_Outline_Reverse, FT_Outline_Render, + FT_Outline_Transform): Check for valid `outline' pointer. + + * src/base/ftobjs.c (FT_New_GlyphSlot): Prepend glyph slot to + face->glyph, otherwise a new second glyph slot cannot be created. + (FT_Done_GlyphSlot): Fix memory leak. + (FT_Open_Face): Updated -- face->glyph is already managed by + FT_New_GlyphSlot. + + * src/type42/t42objs.c (T42_GlyphSlot_Done): Updated. + +2005-05-20 Kirill Smelkov + + * include/freetype/ftimage.h (FT_Raster_Params), + include/freetype/ftoutln.h (FT_Outline_Translate, + FT_Outline_Transform), src/base/ftoutln.c (FT_Outline_Translate, + FT_Outline_Transform): Decorate parameters with `const' where + appropriate. + Update all callers. + + * src/raster/ftraster.c (ft_black_reset), src/smooth/ftgrays.c + (gray_raster_reset): Remove `const' from `pool_base' argument. + +2005-05-18 Kirill Smelkov + + * src/raster/ftmisc.h: New file. Only needed if ftraster.c is + compiled as stand-alone. + + * src/raster/ftraster.c: Add comment how to compile as stand-alone. + s/FT_CONFIG_OPTION_STATIC_RASTER/FT_STATIC_RASTER/. + s/TT_STATIC_RASTER/FT_STATIC_RASTER/. + [_STANDALONE_]: Include ftimage.h and ftmisc.h. + (FT_TRACE1, FT_TRACE6, ft_memset, FT_MEM_ZERO): Define + conditionally. + (Render_Glyph, Render_Gray_Glyph): Return Raster_Err_None (or + Raster_Err_Unsupported). + (ft_black_new) [_STANDALONE_]: Fix type of `the_raster'. + (ft_black_init, ft_black_reset, ft_black_set_mode, ft_black_render): + Use `ras', not `raster'. + (ft_black_done): Use FT_UNUSED_RASTER. + (Horizontal_Sweep_Init, Horizontal_Sweep_Step, + Horizontal_Gray_Sweep_Span): Use FT_UNUSED_RASTER. + +2005-05-18 Werner Lemberg + + * docs/announce: Start updating. + + * docs/CHANGES: Updated. + +2005-05-16 Vitaliy Pasternak + + * builds/win32/visualc/freetype.vcproj: Updated. + Exclude debug info for `Release' versions to reduce library size. + +2005-05-16 Werner Lemberg + + * src/base/ftobjs.c (FT_Open_Face): Make it work as documented, this + is, ignore `aface' completely if face_index < 0. Reported by David + Osborn . + +2005-05-16 Kirill Smelkov + + * include/freetype/ftimage.h (FT_Outline_MoveToFunc, + FT_Outline_LineTo_Func, FT_Outline_ConicToFunc, + FT_Outline_CubicToFunc), src/smooth/ftgrays.c (gray_render_conic, + gray_render_cubic, gray_move_to, gray_line_to, gray_conic_to, + gray_cubic_to, gray_render_span, gray_sweep): Decorate parameters + with `const' where appropriate. + +2005-05-11 Kirill Smelkov + + * include/freetype/ftimage.h (FT_Raster_RenderFunc), + include/freetype/ftrender.h (FT_Glyph_TransformFunc, + FT_Renderer_Render_Func, FT_Renderer_TransformFunc), + src/base/ftglyph.c (ft_outline_glyph_transform), + src/raster/ftrend1.c (ft_raster1_transform, ft_raster1_render), + src/smooth/ftgrays.c (FT_Outline_Decompose, gray_raster_render), + src/smooth/ftsmooth.c (ft_smooth_transform, + ft_smooth_render_generic, ft_smooth_render, ft_smooth_render_lcd, + ft_smooth_render_lcd_v): Decorate parameters with `const' where + appropriate. + + * src/raster/ftraster.c (RASTER_RENDER_POOL): Removed. Obsolete. + (ft_black_render): Decorate parameters with `const' where + appropriate. + +2005-05-11 Werner Lemberg + + * src/sfnt/ttcmap.c (tt_cmap4_set_range): Fix typo (FT_PEEK_SHORT -> + FT_PEEK_USHORT) which caused crashes. Reported by Ismail Donmez + . + +2005-05-08 Werner Lemberg + + * include/freetype/internal/ftserv.h (FT_FACE_FIND_GLOBAL_SERVICE) + [__cplusplus]: Fix typo. + +2005-05-07 Werner Lemberg + + Handle unsorted SFNT type 4 cmaps correctly (reported by Dirck + Blaskey ). + + * src/sfnt/ttcmap.h (TT_CMap): Add member `unsorted'. + * src/sfnt/ttcmac.c: Use SFNT_Err_Ok where appropriate. + + (tt_cmap0_validate, tt_cmap2_validate, tt_cmap6_validate, + tt_cmap8_validate, tt_cmap10_validate, tt_cmap12_validate): Use + `FT_Error' as return type. + (tt_cmap4_validate): Use `FT_Error' as return type. + Return error code for unsorted cmap. + (tt_cmap4_char_index, tt_cmap4_char_next): Use old code for unsorted + cmaps. + (tt_face_build_cmaps): Set `unsorted' variable in cmap. + +2005-05-07 Werner Lemberg + + * src/truetype/ttpload.c (tt_face_get_location): Fix typo. + +2005-05-06 Werner Lemberg + + * src/cff/cffobjs.c (cff_face_init): Set ppem value in top + dictionary for SFNT-based CFF. + +2005-05-05 Werner Lemberg + + Handle malformed `loca' table entries. + + * docs/TODO: Add some bugs which should be fixed. + + * include/freetype/internal/tttypes.h (TT_FaceRec): Add `glyf_len' + element. + + * src/truetype/ttpload.c (tt_face_load_loca): Get length of `glyf' + table. + (tt_face_get_location): Fix computation of `asize' for malformed + `loca' entries. + +2005-05-01 David Turner + + * Jamfile: Remove `otvalid' from the list of compiled modules. + + * include/freetype/internal/ftserv.h: Add compiler pragmas to get + rid of annoying warnings with Visual C++ compiler in maximum warning + mode. + + * src/autofit/afhints.c, src/autofit/aflatin.c, src/base/ftstroke.c, + src/bdf/bdfdrivr.c, src/cache/ftcbasic.c, src/cache/ftccmap.c, + src/cache/ftcmanag.c, src/cff/cffload.c, src/cid/cidload.c, + src/lzw/zopen.c, src/otvalid/otvgdef.c, src/pcf/pcfread.c, + src/sfnt/sfobjs.c, src/truetype/ttgxvar.c: Remove compiler warnings. + +2005-04-28 Werner Lemberg + + * docs/TODO: Updated. + +2005-04-24 Werner Lemberg + + * src/otvalid/otvcommn.c + (otv_GSUBGPOS_have_MarkAttachmentType_flag): Handle table == 0. + +2005-04-16 Werner Lemberg + + * src/cff/cffobjs.c (cff_face_init): Set default upem value in top + font dict also. + Handle font matrix settings in subfonts. + + * src/cff/cffgload.c (cff_slot_load): Use the correct font matrix + for CID-keyed fonts with subfonts. + + * docs/formats.txt: Updated. + +2005-04-14 Kirill Smelkov + + * include/freetype/freetype.h (FT_Vector_Transform), + include/freetype/ftimage.h (FT_Raster_Params), + include/freetype/ftoutln.h, src/base/ftoutln.c (FT_Outline_Get_CBox, + FT_Outline_Copy, FT_Outline_Transform, FT_Vector_Transform, + FT_Outline_Get_Bitmap), src/raster/ftraster.c (ft_black_render), + src/smooth/ftgrays.c (gray_raster_render): Decorate parameters with + `const' where appropriate. + +2005-04-14 Werner Lemberg + + * src/type1/t1load.c (parse_charstrings): Catch this non-standard + beginning of the /CharStrings dictionary: + + /CharStrings 118 dict def + Private begin + CharStrings begin + + * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Fix arguments + to call of tt_sbit_decoder_load_bitmap. + +2005-04-13 Werner Lemberg + + * docs/TODO: Updated. + + * autogen.sh: Use `--force' for all commands. + +2005-04-09 Werner Lemberg + + * src/pshinter/pshalgo.c (ps_hints_apply): Change scaling values + only if `fitted' is not zero. + +2005-04-06 Werner Lemberg + + * src/truetype/ttgload.c (tt_face_get_metrics) [FT_OPTIMIZE_MEMORY]: + Fix typo which sometimes causes wrong metrics for the last glyph. + +2005-04-04 David Turner + + * devel/ftoption.h, include/freetype/config/ftoption.h + (FT_OPTIMIZE_MEMORY): Comment out this macro for the upcoming 2.1.10 + release. + (*_CHESTER_*): Removed. No longer used. + + * src/autofit/afhints.c (af_axis_hints_new_segment, + af_axis_hints_new_edge): Small tweak to use less heap memory. + +2005-04-03 Werner Lemberg + + * src/type1/t1parse.c (T1_New_Parser): Relax the check for a valid + first line in the font. + +2005-04-03 Werner Lemberg + + * docs/CHANGES, include/freetype/freetype.h: Improve documentation + of FT_Set_Pixel_Sizes and FT_Set_Char_Size. + +2005-03-26 Detlef Würkner + + * builds/amiga/src/base/ftsystem.c (ft_amiga_stream_io): Fix buffer + offsets after a large read. + +2005-03-26 Werner Lemberg + + * src/autofit/afglobal.c (af_face_globals_get_metrics): + s/index/gidx/. + + * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Fix compiler + warnings. + + * src/sfnt/rules.mk (SFNT_DRV_SRC): Add ttsbit0.c. + + * src/sfnt/ttsbit0.h: Dummy file for build with `make'. + +2005-03-26 Detlef Würkner + + Update of the Amiga port. + + * builds/amiga/makefile, builds/amiga/makefile.os4, + builds/amiga/smakefile: Included the base extension files + (ftbitmap.c, ftotval.c, ftpfr.c, ftstroke.c, ftxf86.c). + +2005-03-25 Detlef Würkner + + Update of the Amiga port. + + * builds/amiga/makefile, builds/amiga/smakefile: Handle new modules. + + * builds/amiga/makefile.os4: Makefile for AmigaOS4 SDK. + + * builds/amiga/README: Updated. + + * builds/amiga/include/freetype/config/ftconfig.h: Handle gcc for + AmigaOS4. + + * builds/amiga/include/freetype/config/ftmodule.h: Handle new + modules. + + * builds/amiga/src/base/ftdebug.c: Updated to current version of + default ftdebug.c. + Add various include files and macros to have proper support for + both AmigaOS4 and older AmigaOS versions. + Don't declare KVPrintF explicitly. + Replace getenv with GetVar. + Actually enable debugging code. + + * builds/amiga/src/base/ftsystem.c: Major rewrite. + +2005-03-23 Werner Lemberg + + * tests/*: Removed. + +2005-03-23 Werner Lemberg + + * docs/CHANGES, docs/INSTALL.ANY: Updated. + + * include/freetype/ftmoderr.h: Replace `Autohint' with `Autofit'. + Add `OTvalid'. + + * src/autofit/aferrors.h: New file. + + * src/autofit/afglobal.c, src/autofit/afhints.c, + src/autofit/aflatin.c, src/autofit/afloader.c: s/FT_Err_/AF_Err_/. + Include aferrors.h. + + * src/autofit/rules.mk (AUTOF_DRV_H): Include aferrors.h. + + * src/otvalid/otverror.h: s/FT_Mod_Err_OTV/FT_Mod_Err_OTvalid/. + +2005-03-22 David Turner + + * src/autohint/*: Removed. + * Jamfile: Updated. + +2005-03-15 David Turner + + * src/bdf/bdflib.c: Remove compiler warnings. + (hash_rehash, hash_init): Don't call FT_MEM_ZERO. + (_bdf_list_t): Add `memory' field. + (_bdf_list_init, _bdf_list_done, _bdf_list_ensure): New functions. + (_bdf_shift, _bdf_join): Rename to... + (_bdf_list_shift, _bdf_list_join): This. + (_bdf_split): Renamed to... + (_bdf_list_split): This. Use new functions. + (bdf_internal_readstream): Removed. + (NO_SKIP): New macro. + (_bdf_readstream): Rewritten. + (bdf_create_property, _bdf_add_comment): Improve allocation. + (_bdf_set_default_spacing, _bdf_parse_glyphs): Updated. Improve + allocation. + (_bdf_parse_properties, _bdf_parse_start): Updated. + (bdf_load_font): Updated to use new functions. + + * src/type1/t1parse.c (check_type1_format): New function. + (T1_New_Parser): Use it to check font header before allocating + anything on the heap. + + * src/type42/t42parse.c (t42_parser_init): Modify functions to check + the font header before allocating anything on the heap. + + * include/freetype/internal/ftmemory.h (FT_ARRAY_MAX, + FT_ARRAY_CHECK): New macros. + + * src/base/ftstream.c (FT_Stream_TryRead): New function. + * include/freetype/internal/ftstream.h: Updated. + + * src/pcf/pcfread.c (pcf_read_TOC), src/pcf/pcfutil.c + (BitOrderInvert, TwoByteSwap, FourByteSwap): Minor fixes and + simplifications. Try to protect the PCF driver from doing stupid + things with broken fonts. + + * src/lzw/ftlzw.c (FT_Stream_OpenLZW): Check the LZW header before + doing anything else. This avoids unnecessary heap allocations + (400KByte of heap memory for the LZW decoder). + + * src/gzip/ftgzip.c (FT_Stream_OpenGZip): Ditto for the gzip + decoder, although the code savings are smaller. + + * docs/CHANGES: Updated. + +2005-03-10 David Turner + + * src/tools/glnames.py: Add comment to explain the compression + being used for the Adobe Glyph List. + +2005-03-10 Werner Lemberg + + * src/truetype/ttpload.c (tt_face_load_cvt, tt_face_load_fpgm): + Fix serious typo which prevented correct TT rendering. + + * include/freetype/internal/ftmemory.h: Undo change from 2005-03-03. + To suppress warnings it is sufficient to use `-fno-strict-aliasing'. + +2005-03-10 Werner Lemberg + + * src/tools/glnames.py: Formatted. + Format output to be in sync with other FreeType code. + Import `re' and `os.path'. + (StringTable) <__init__>: Add parameter to initialize master table + name. + (StringTable) : Don't pass master table name. + (StringTable) : Emit explanatory comment. + Simplify and make output more human readable. + (t1_bias, glyph_list, adobe_glyph_names): Removed. Unused. + (main): Use `basename' for file name in header. + + * src/psnames/pstables.h: Regenerated. + +2005-03-09 David Turner + + * src/tools/glnames.py: Rewrite the generator for the `pstables.h' + header file which contains various constant tables related to glyph + names. It now uses a different, more compact storage scheme that + saves about 20KB. This also closes Savannah bug #12262. + + * src/psnames/pstables.h: Regenerated. + + * src/psnames/psmodule.c (ps_unicode_value): Use + `ft_get_adobe_glyph_index', a new function defined in `pstables.h'. + (ps_get_macintosh_name, ps_get_standard_strings): Updated. + + * src/base/ftobjs.c (FT_Set_Char_Sizes): Handle fractional sizes + more carefully. This fixes Savannah bug #12263. + +2005-03-06 David Turner + + * src/otvalid/otvgsub.c, src/otvalid/otvgpos.c: Make static tables + constant. + + * src/autofit/aflatin.c (af_latin_metrics_init): Fix Savannah bug + #12212 (auto-hinter refuses to work if no Unicode charmap in font). + +2005-03-05 Werner Lemberg + + * autogen.sh: New script for bootstrapping. + + * README.CVS: New file which documents bootstrapping. + + * builds/unix/aclocal.m4, builds/unix/config.guess, + builds/unix/config.sub, builds/unix/configure, + builds/unix/ltmain.sh: Removed. + +2005-03-04 Werner Lemberg + + * src/base/ftutil.c: Include FT_INTERNAL_OBJECTS_H. + +2005-03-03 Werner Lemberg + + Various fixes for C and C++ compiling. + + * src/autofit/*: Add copyright messages. + + * src/autofit/afhints.c (af_glyph_hints_done): Don't use + `AF_Dimension' but `int' for loop counter. + + * src/autofit/aflatin.c (af_latin_metrics_init_widths): Don't use + `AF_Dimension' but `int' for loop counter. + Use proper enumeration value for `render_mode'. + (af_latin_metrics_scale_dim): Don't shadow variables. + (af_latin_hints_compute_segments): Use proper cast for `major_dir' + and `segment_dir'. + (af_latin_align_linked_edge, af_latin_hint_edges): Fix arguments of call to + `af_latin_compute_stem_width'. + (af_latin_hints_apply): Don't use `AF_Dimension' but `int' for loop + counter. + + * src/base/ftdbgmem.c (ft_mem_table_get_source, FT_DumpMemory): Use + proper cast for memory allocation. + + * src/cff/cffdrivr.c (cff_get_kerning): Use proper cast for + initialization of `sfnt'. + + * src/sfnt/sfdriver.c: Include `ttkern.h'. + + * src/sfnt/ttkern.c (tt_face_get_kerning): Don't shadow variables. + + * src/truetype/ttgload.c: Include `ttpload.h'. + +2005-03-03 David Turner + + * include/freetype/internal/ftmemory.h (FT_ALLOC, FT_REALLOC, + FT_QALLOC, FT_QREALLOC) [gcc >= 3.3]: Provide macro versions which + avoid compiler warnings. + (FT_NEW, FT_NEW_ARRAY, FT_RENEW_ARRAY, FT_QNEW, FT_QNEW_ARRAY, + FT_QRENEW_ARRAY, FT_ALLOC_ARRAY, FT_REALLOC_ARRAY): Updated. + + * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE, + FT_FACE_FIND_GLOBAL_SERVICE, FT_FACE_LOOKUP_SERVICE) [__cplusplus]: + Provide macro versions which avoid compiler warnings. + + * src/base/ftutil.c (ft_highpow2): New utility function. + + * include/freetype/internal/ftobjs.h: Updated. + + * src/pfr/pfrload.c (pfr_get_gindex, pfr_compare_kern_pairs, + pfr_sort_kerning_pairs): Don't define if FT_OPTIMIZE_MEMORY is set. + (pfr_phy_font_done): Don't handle `kern_pairs' if FT_OPTIMIZE_MEMORY + is set. + (pfr_phy_font_load): Don't call `pfr_sort_kerning_pairs' if + FT_OPTIMIZE_MEMORY is set. + + * src/pfr/pfrobjs.c (pfr_slot_load): Comment out some code which + doesn't work with broken fonts. + (pfr_face_get_kerning) [FT_OPTIMIZE_MEMORY]: Implement. + + * src/pfr/pfrtypes.h (PFR_KernItemRec): Optimize member types. + (PFR_NEXT_KPAIR): New macro. + (PFR_PhyFontRec): Don't define `kern_pairs' if FT_OPTIMIZE_MEMORY is + set. + + * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Introduce + temporary variable to avoid gcc warning. + (tt_face_load_sbit_image): Mark unused variables with FT_UNUSED. + + * src/truetype/ttpload.c (tt_face_load_loca) [FT_OPTIMIZE_MEMORY]: + Remove redundant variable. + + * include/freetype/config/ftmodule.h: Moving the order of drivers to + speed up font loading. The PCF and BDF loaders are still slow and + consume far too much memory. + +2005-03-03 Werner Lemberg + + * devel/ftoption.h: Updated to recent changes. + +2005-03-02 Werner Lemberg + + * src/autofit/afdummy.c, src/autofit/afdummy.h + (af_dummy_script_class): Fix type. + + * src/autofit/aflatin.c, src/autofit/aflatin.h + (af_latin_script_class): Fix type. + + * src/autofit/rules.mk (AUTOF_DRV_SRC): Fix typo. + +2005-03-01 David Turner + + * src/sfnt/ttkern.c (tt_face_load_kern, tt_face_get_kerning), + src/sfnt/ttsbit0.c (tt_face_load_sbit_strikes, + tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_compound, + tt_sbit_decoder_load_image), src/sfnt/ttload.c + (tt_face_load_metrics): Remove compiler warnings + -- redundant variables, missing initializations, etc. + + * src/sfnt/ttsbit.h: Handle FT_OPTIMIZE_MEMORY. + + * src/autofit/rules.mk, src/autofit/module.mk, + src/autofit/afangles.h: New files. + + * src/autofit/afhints.c (af_axis_hints_new_segment, + af_axis_hints_new_edge): New functions. + (af_glyph_hints_done): Do proper deallocation. + (af_glyph_hints_reload): Only reallocate points array. This + drastically reduces heap usage. + + * src/autofit/afhints.h (AF_PointRec, AF_SegmentRec): Optimize + member types and positions. + (AF_AxisHintsRec): Add `max_segments' and `max_edges'. + (af_axis_hints_new_segment, af_axis_hints_new_edge): New prototypes. + + * src/autofit/aflatin.c (af_latin_metricsc_scale): Don't call + AF_SCALER_EQUAL_SCALES. + (af_latin_hints_compute_segments): Change return type to FT_Error. + Update all callers. + Improve segment allocation. + (af_latin_hints_compute_edges): Change return type to FT_Error. + Update all callers. + Improve edge allocation and link handling. + (af_latin_hints_detect_features): Change return type to FT_Error. + Update all callers. + + * src/autofit/aflatin.h: Updated. + + * src/autofit/afloader.c (af_loader_load_g) + : Assure axis->num_edges > 1. This fixes + a bug with certain fonts. + + * include/freetype/config/ftmodule.h: The auto-fitter is now the + only supported auto-hinting module. + + * include/freetype/config/ftstdlib.h (FT_INT_MAX): New macro. + +2005-02-28 Werner Lemberg + + * src/truetype/ttpload.c (tt_face_load_loca): Fix typo. + + * src/sfnt/ttkern.c: Include `ttkern.h'. + (FT_COMPONENT): Updated. + + * include/freetype/internal/fttrace.h: Add entry for `ttkern'. + + * src/sfnt/ttsbit0.c: s/FT_Err_/SFNT_Err_/. + Decorate constants with `U' and `L' where necessary. + + * src/sfnt/ttcmap.c (tt_cmap4_next): Remove unused variable. + +2005-02-28 David Turner + + * src/base/ftdbgmem.c (FT_DumpMemory): Added sorting of memory + sources according to decreasing maximum cumulative allocations. + (ft_mem_source_compare): New auxiliary function. + + * src/sfnt/ttsbit0.c: New file, implementing a heap-optimized + embedded bitmap loader. + + * src/sfnt/ttsbit.c: Include `ft2build.h', FT_INTERNAL_DEBUG_H, + FT_INTERNAL_STREAM_H, FT_TRUETYPE_TAGS_H. + Load `ttsbit0.c' if FT_OPTIMIZE_MEMORY is set, otherwise use + file contents. + (tt_face_load_sbit_strikes): Set up root fields to indicate the + strikes. This fixes Savannah bug #12107. + Use `static' keyword for `sbit_line_metrics_field', + `strike_start_fields', `strike_end_fields'. + + * include/freetype/internal/tttypes.h (TT_FaceRec): Define + `sbit_table', `sbit_table_size', `sbit_num_strikes' if + FT_OPTIMIZE_MEMORY is set. + Don't define `num_sbit_strikes' and `sbit_strikes' if + FT_OPTIMIZE_MEMORY is set. + + * src/cff/cffobjs.c (sbit_size_reset): Handle FT_OPTIMIZE_MEMORY. + + * src/sfnt/sfobjs.c (sfnt_load_face): Fixed bug that prevented + loading SFNT fonts without a `kern' table. + Properly pass root->face_flags. + Remove code for TT_CONFIG_OPTION_EMBEDDED_BITMAPS. + + * src/sfnt/sfdriver.c (sfnt_interface) + [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Don't use `tt_find_sbit_image' + and `tt_load_sbit_metrics'. + + * src/sfnt/ttcmap.c: Optimize linear charmap scanning for Format 4. + (OPT_CMAP4): New macro. + (TT_CMap4Rec) [OPT_CMAP4]: New structure. + (tt_cmap4_init, tt_cmap4_set_range, tt_cmap4_next, tt_cmap4_reset) + [OPT_CMAP4]: New functions. + (tt_cmap4_char_next) [OPT_CMAP4]: Use `tt_cmap4_next' and + `tt_cmap4_reset'. + (tt_cmap4_class_rec) [OPT_CMAP4]: Use `TT_CMap4Rec' and + `tt_cmap4_init'. + + * src/truetype/ttobjs.c (Reset_SBit_Size): Handle + FT_OPTIMIZE_MEMORY. + + * src/autofit/afhints.h (AF_PointRec, AF_SegmentRec, AF_EdgeRec): + Optimize member types. + + * src/autofit/afloader.c (af_loader_done): Call + `af_glyph_hints_done'. + +2005-02-27 David Turner + + * src/sfnt/ttkern.c (tt_face_load_kern): Fix a small bug which + caused invalid (random) return values for the horizontal kerning. + +2005-02-25 David Turner + + Implement several memory optimizations to drastically reduce the + heap usage of FreeType, especially in the case of memory-mapped + files. The idea is to avoid loading and decoding tables in the + heap, and instead access the raw data whenever possible (i.e., when + it doesn't compromise performance). + + This has several benefits: For example, opening vera.ttf now uses + just a small amount of memory (even when the FT_Library footprint is + accounted for), until you start loading glyphs. Even then, you save + at least 20KB compared to the non-optimized case. Performance of + various operations, including open and close, has also been + dramatically improved. + + More optimizations to come, especially for the auto-hinter. + + * include/freetype/internal/sfnt.h (TT_Face_GetKerningFunc): New + function type. + (SFNT_Interface): Add it. + + * include/freetype/internal/tttypes.h (TT_HdmxEntryRec, TT_HdmxRec, + TT_Kern0_PairRec): Don't define if FT_OPTIMIZE_MEMORY is set. + (TT_FaceRec): Define `horz_metrics', `horz_metrics_size', + `vert_metrics', `vert_metrics_size', `hdmx_table', + `hdmx_table_size', `hdmx_record_count', `hdmx_record_size', + `hdmx_record_sizes', `kern_table', `kern_table_size, + `num_kern_tables', `kern_avail_bits', `kern_order_bits' if + FT_OPTIMIZE_MEMORY is set. + Don't define `hdmx', `num_kern_pairs', `kern_table_index', + `kern_pairs' if FT_OPTIMIZE_MEMORY is set. + + * src/base/ftdbgmem.c (ft_mem_table_set): Don't shadow variable. + Fix compiler warning. + + * src/cff/cffdrivr.c (Get_Kerning): Renamed to... + (cff_get_kerning): This. Simplify. + (cff_driver_class): Updated. + + * src/sfnt/Jamfile (_sources): Add `ttkern'. + * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `ttkern.c'. + + * src/sfnt/sfdriver.c (sfnt_interface): Add `tt_face_get_kerning'. + + * src/sfnt/sfnt.c: Include `ttkern.c'. + + * src/sfnt/sfobjs.c: Include `ttkern.h'. + (sfnt_load_face): Consider the `kern' and `gasp' table as optional. + (sfnt_done_face): Call `tt_face_done_kern'. + Handle horizontal metrics for FT_OPTIMIZE_MEMORY. + + * src/sfnt/ttkern.c, src/sfnt/ttkern.h: New files. Code has been + taken from `ttload.c' and `ttload.h'. + Provide special versions of `tt_face_load_kern', + `tt_face_get_kerning', and `tt_face_done_kern' for + FT_OPTIMIZE_MEMORY. + + * src/sfnt/ttload.c (tt_face_load_metrics, tt_face_load_hdmx, + tt_face_free_hdmx): Provide version for FT_OPTIMIZE_MEMORY. + (tt_face_load_kern, tt_kern_pair_compare, TT_KERN_INDEX): Moved to + `ttkern.c'. + + * src/sfnt/ttload.h: Updated. + + * src/sfnt/ttsbit.c (sbit_metrics_field): Add `static' keyword. + + * src/truetype/ttdriver.c (Get_Kerning): Renamed to... + (tt_get_kerning): This. Simplify. + (tt_driver_class): Updated. + + * src/truetype/ttgload.c (TT_Get_Metrics): Renamed to... + (tt_face_get_metrics): This. Provide version for FT_OPTIMIZE_MEMORY. + Update all callers. + (Get_Advance_Widths): Replaced with... + (Get_Advance_WidthPtr): This. Provide version for + FT_OPTIMIZE_MEMORY. + Update all callers. + + * src/truetype/ttgload.h: Updated. + +2005-02-22 David Turner + + * src/base/ftdbgmem.c: Partly rewritten. Added the ability to list + all allocation sites in the memory debugger. Also a new function + FT_DumpMemory() was added. It is only available in builds with + FT_DEBUG_MEMORY defined, and you must declare it in your own code to + use it, i.e., with something like: + + extern void FT_DumpMemory( FT_Memory ); + + ... + + FT_DumpMemory( memory ); + + * include/freetype/config/ftoption.h + (TT_CONFIG_OPTION_BYTECODE_INTERPRETER): Comment out definition -- + again. + (FT_OPTIMIZE_MEMORY): New configuration macro to control various + optimizations for reducing the heap footprint of memory-mapped + TrueType files. + + * include/freetype/internal/ftmemory.h (FT_ARRAY_ZERO): New + convenience macro. + + * include/freetype/internal/tttypes.h (TT_FaceRec) + [FT_OPTIMIZE_MEMORY]: Use optimized types for `num_locations' and + `glyph_locations'. + + * src/truetype/ttgload.c (load_truetype_glyph): Call + `tt_face_get_location'. + + * src/truetype/ttobjs.c (tt_face_init) + [FT_CONFIG_OPTION_INCREMENTAL]: Improve error handling. + (tt_face_done): Call `tt_face_done_loca'. + + * src/truetype/ttpload.c (tt_face_get_location, tt_face_done_loca): + New functions. If FT_OPTIMIZE_MEMORY is set, the locations table is + read directly from memory-mapped streams, instead of being decoded + into the heap. + (tt_face_load_loca) [FT_OPTIMIZE_MEMORY]: New implementation. + (tt_face_load_cvt, tt_face_load_fpgm): Only load table if the + bytecode interpreter is compiled in. + + * src/truetype/ttpload.h: Updated. + + * src/autohint/ahglyph.c (ah_outline_load): Improve allocation + logic. + +2005-02-20 Werner Lemberg + + * builds/unix/ltmain.sh: Regenerated with `libtoolize --force + --copy' from libtool 1.5.14. + * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from + automake 1.9.4. + + * builds/unix/config.guess, builds/unix/config.sub: Updated from + `config' CVS module at subversions.gnu.org. + + * builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from + `texinfo' CVS module at subversions.gnu.org. + +2005-02-14 Werner Lemberg + + * src/cff/cffcmap.c (cff_cmap_unicode_init): Don't try to build + a cmap for a CID-keyed font which doesn't have SIDs. + +2005-02-13 Werner Lemberg + + * src/type1/t1load.c (read_binary_data): Return more meaningful + value. + (parse_encoding, parse_subrs, parse_charstrings, parse_dict): Check + parser error value after call to T1_Skip_PS_Token (where necessary). + + * src/type1/t1parse.c (T1_Get_Private_Dict): Check parser error + value after call to T1_Skip_PS_Token. + + * src/cid/cidparse.c (cid_parser_new): Check parser error value + after call to cid_parser_skip_PS_token. + + * src/type42/t42parse.c (t42_parse_encoding, t42_parse_sfnts, + t42_parse_charstrings, t42_parse_dict): Check parser error value + after call to T1_Skip_PS_Token (where necessary). + + * src/psaux/psobjc.c (skip_string, ps_parser_skip_PS_token, + ps_tobytes): Add error messages. + +2005-02-12 Werner Lemberg + + * configure: Output more variables to the created Makefile so that + it can be used for ft2demos also (if the FT2DEMOS variable is + defined). + +2005-02-10 David Turner + + * src/pfr/pfrgload.c (pfr_glyph_load): Fix an unbounded growing + dynamic array when loading a glyph from a PFR font (Savannah bug + #11921). + + * src/base/ftbitmap.c (FT_Bitmap_Convert): Small improvements to the + conversion function (mainly stupid optimization). + + * src/base/Jamfile: Adding ftbitmap.c to the list of compiled files. + +2005-02-10 Werner Lemberg + + * builds/unix/freetype-config.in: Add new flag `--ftversion' to + return the FreeType version. Suggested by George Williams + . + + * docs/CHANGES: Updated. + +2005-02-09 Werner Lemberg + + * src/otvalid/otvmod.c (otv_validate): Deallocate arrays in case + of error. Reported by YAMANO-UCHI Hidetoshi . + +2005-02-08 Werner Lemberg + + * src/psaux/t1decode.c (t1_decoder_parse_charstrings) + : Accept `T1_Parse_Have_Moveto' state also which can + happen in empty glyphs. Reported by Ian Brown + (Savannah bug #11856). + +2005-02-04 Werner Lemberg + + * src/otlayout/*: Removed. Obsolete. + +2004-12-28 Werner Lemberg + + * builds/unix/ltmain.sh: Regenerated with `libtoolize --force + --copy' from libtool 1.5.10. + * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from + automake 1.9.4. + * builds/unix/configure: Regenerated with autoconf 2.59b. + + * builds/unix/config.guess, builds/unix/config.sub: Updated from + `config' CVS module at subversions.gnu.org. + + * builds/unix/install-sh: Updated from + `texinfo' CVS module at subversions.gnu.org. + + * builds/unix/ftsystem.c (FT_Stream_Open): Add proper cast for + ft_alloc. + Fix compiler warning. + +2004-12-27 Dirck Blaskey + + * src/cff/cffobjs.c (cff_face_init): Improve computation of + FT_STYLE_BOLD_FLAG. + +2004-12-27 Werner Lemberg + + * src/cff/cffobjs.c (cff_face_init): A CFF within an SFNT can have + only a single font. This is undocumented but has been verified on + the opentype list. + +2004-12-26 Werner Lemberg + + * Jamfile (FT2_COMPONENTS): Add `otvalid'. + +2004-12-25 Werner Lemberg + + * src/base/ftbitmap.c (FT_Bitmap_Convert): Fix compiler warning. + +2004-12-15 Werner Lemberg + + * vms_make.com: Add ftbitmap.obj. + +2004-12-14 Werner Lemberg + + * src/base/ftbitmap.c, include/freetype/ftbitmap.h: New files for + handling various bitmap formats. + + * include/freetype/config/ftheader.h (FT_BITMAP_H): New macro. + + * src/base/rules.mk (BASE_EXT_SRC): Add ftbitmap.c. + + * src/bdf/bdfdrivr.c (BDF_Glyph_Load): Don't convert bitmaps to 8bpp + but return them as-is. + + * docs/CHANGES: Mention new bitmap API. + * include/freetype/ftchapter.s: Updated. + +2004-12-11 Robert Clark + + * src/base/ftobjs.c (FT_Get_Kerning): Make kerning amount + dependent on ppem by scaling down for ppem < 25, then do normal + rounding. This gives slightly better results than rounding towards + zero. + +2004-12-09 Werner Lemberg + + * src/base/ftobjs.c (FT_Get_Kerning): Always round towards zero + for FT_KERNING_DEFAULT. This greatly enhances the kerning for + small ppem values. + +2004-12-08 Werner Lemberg + + * src/base/ftobjs.c (ft_glyphslot_clear): Reset `lsb_delta' and + `rsb_delta'. + +2004-12-05 Werner Lemberg + + * builds/unix/install.mk (install): Use $(OBJ_BUILD) for ftconfig.h. + +2004-12-03 Antoine Leca + + * include/freetype/ttnameid.h: Updated to latest + specifications from Microsoft. + +2004-11-26 Jouk Jansen + + * vms_make.com: Include ftbbox.c. + Fix `ccopt'. + Handle `otvalid' module. + Update `vmslib.dat' default values. + Fixes to `libs.opt'. + +2004-11-23 Anders Kaseorg + + * src/base/ftoutln.c (FT_OrientationExtremumRec, + ft_orientation_extremum_compute): Removed. + (FT_Outline_Get_Orientation): Rewritten, simplified. + + * src/autohint/ahglyph.c: Include FT_OUTLINE_H. + (ah_test_extremum, ah_get_orientation): Removed. + (ah_outline_load): Use FT_Outline_Get_Orientation. + + * src/base/ftsynth.c (ft_test_extrama, ft_get_orientation): Removed. + (FT_GlyphSlot_Embolden): Use FT_Outline_Get_Orientation. + +2004-11-23 Fernando Papa + + * src/truetype/ttinterp.h: Fix typo. + +2004-11-22 Antoine Leca + + * builds/win32/detect.mk: Corrected logic that detects Windows NT to + use the previous change even if win32 is forced. Corrected + detection of win32 on Win9X. + + * builds/dos/detect.mk: Added same correction as for win32 about + COPY on Windows NT. Detection of plain DOS 7.x. + +2004-11-22 Werner Lemberg + + * builds/detect.mk: Undo change from 2004-11-20. + * builds/win32/detect.mk: If the `OS' environment variable contains + `Windows_NT', use `cmd.exe /c copy' for copying files. + +2004-11-20 Werner Lemberg + + * builds/detect.mk (dos_setup): Use `cmd.exe' for copying + $(CONFIG_MK) to force lowercase file name under Windows. + +2004-11-19 Werner Lemberg + + Fix a serious bug in the TT hinter. + + * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Don't shift + points vertically before hinting. + + * docs/CHANGES: Updated. + + * src/cache/ftcglyph.c (FTC_GNode_UnselectFamily, + FTC_GCache_Lookup): A new try to fix comparison with zero. + +2004-11-16 Werner Lemberg + + * builds/unix/configure.ac: Add `-fno-strict-aliasing' if gcc is + used. + * builds/unix/configure: Regenerated. + * builds/unix/config.guess, builds/unix/config.sub: Updated from + `config' CVS module at subversions.gnu.org. + +2004-11-16 Dr. Martin P.J. Zinser + + * src/cache/ftcglyph.c (FTC_GNode_UnselectFamily, + FTC_GCache_Lookup): Fix comparison with zero. + + * docs/INSTALL.VMS: Updated. + + * vms_make.com: Updated. All `descrip.mms' files are now created + automatically. + + * src/*/descrip.mms: Removed. + +2004-11-16 Owen Taylor + + * builds/unix/freetype-config.in: Suppress -L$libdir for + /usr/lib64 as well as /usr/lib. (Reported by Dan Winship - + https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=139199) + +2004-11-11 Werner Lemberg + + * src/cff/cffdrivr.c (cff_service_ps_info): Updated. + * src/cid/cidriver.c (cid_service_ps_info): Updated. + * src/type42/t42drivr.c (t42_ps_get_font_private): New function. + (t42_service_ps_info): Updated. + + * src/type42/t42parse.c (t42_parse_dict): Remove compiler warning. + +2004-11-11 David Bevan + + Add new function FT_Get_PS_Font_Private(). + + * include/freetype/internal/services/svpsinfo.h + (PS_GetFontPrivateFunc): New service function. + + * include/freetype/t1tables.h, src/base/fttype1.c + (FT_Get_PS_Font_Private): New function. + + * src/type1/t1driver.c (t1_ps_get_font_private): New function. + (t1_service_ps_info): Updated. + +2004-10-13 Werner Lemberg + + * include/freetype/config/ftstdlib.h: Include `stddef.h'. + (ft_ptrdiff_t): Define. + + * include/freetype/fttypes.h (FT_PtrDist): Use `ft_ptrdiff_t'. + + * src/cid/cidload.c (cid_parse_dict), src/type1/t1load.c + (parse_dict): Fix compiler warning. + +2004-10-11 Joshua Neal + + * src/sfnt/ttcmap.c (tt_face_build_cmaps): Check for pointer + overflow. + + * src/sfnt/ttload.c (tt_face_load_hdmx): Protect against bad input. + Don't use FT_QNEW_ARRAY but FT_NEW_ARRAY to make deallocation work + in case of failure. + + * src/sfnt/ttsbit.c (Load_SBit_Range): Check range intervals. + (tt_face_load_sbit_strikes): Allocate `strike_sbit_ranges' after + frame test. + + * src/truetype/ttgload.c (TTLoad_Simple_Glyph): Add assertion for + `flag'. + +2004-10-09 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-10-09 Boris Letocha + + Fix handling of NPUSHW if skipped in data stream. + + * src/truetype/ttinterp.c (opcode_length): Set value for NPUSHW + to -2. + (SkipCode, TT_RunIns): Use opcode_length value for computation of + bytes to be skipped. + +2004-09-10 Jouk Jansen + + * vms_make.com: Updated. + +2004-09-09 Werner Lemberg + + Adding OpenType validation module. The code is based on the + (unfinished) `otlayout' module but has been heavily modified to make + it much more compact. + + * src/otvalid/*: New module. + + * include/freetype/ftotval.h, src/base/ftotval.c, + include/freetype/internal/services/svotval.h: New files. + + * include/freetype/config/ftmodule.h: Add otv_module_class. + * include/freetype/config/ftheader.h (FT_OPENTYPE_VALIDATE_H): New + macro. + * include/freetype/internal/ftserv.h + (FT_SERVICE_OPENTYPE_VALIDATE_H): New macro. + * include/freetype/internal/fttrace.h (otvmodule, otvcommon, + otvbase, otvgdef, otvgpos, otvgsub, otvjstf): New trace components. + + * include/freetype/ftchapters.h: Updated. + + * src/base/Jamfile (Library), src/base/descrip.mms (OBJS), + src/base/rules.mk (BASE_EXT_SRC): Updated. + + * docs/CHANGES: Updated. + +2004-09-08 Werner Lemberg + + * src/tools/docmaker/sources.py (re_source_block_format2) : + Use lookahead assertion to not match `*/'. This removes spurious + insertions of `/' in the HTML output. + +2004-09-07 Werner Lemberg + + * src/truetype/ttgxvar.c (TT_Vary_Get_Glyph_Deltas): Fix call to + FT_NEW_ARRAY. + +2004-09-04 Werner Lemberg + + * include/freetype/internal/ftobjs.h: Don't include + FT_CONFIG_STANDARD_LIBRARY_H. + (FT_Validator, FT_ValidationLevel, FT_ValidatorRec, FT_VALIDATOR, + ft_validator_init, ft_validator_run, ft_validator_error, FT_INVALID, + FT_INVALID_TOO_SHORT, FT_INVALID_OFFSET, FT_INVALID_FORMAT, + FT_INVALID_GLYPH_ID, FT_INVALID_DATA): Move to... + + * include/freetype/internal/ftvalid.h: New file. + Make FT_INVALID return module-specific error codes. + + * include/freetype/internal/internal.h (FT_INTERNAL_VALIDATE_H): New + macro. + + * include/freetype/fterrors.h: Undefine FT_ERR_PREFIX only if + FT_KEEP_ERR_PREFIX isn't defined. + + * src/base/ftobjs.c: Include FT_INTERNAL_VALIDATE_H. + + * src/sfnt/ttcmap.h: Don't include FT_INTERNAL_OBJECTS_H but + FT_INTERNAL_VALIDATE_H. + + * src/sfnt/ttcmap.c: Don't include FT_INTERNAL_OBJECTS_H but + FT_INTERNAL_VALIDATE_H. + Include sferrors.h before FT_INTERNAL_VALIDATE_H. + s/FT_Err_Ok/SFNT_Err_Ok/. + + * src/sfnt/sferrors.h: Define FT_KEEP_ERR_PREFIX. + + * src/type1/t1afm.c: Include t1errors.h. + +2004-09-03 Werner Lemberg + + * src/base/ftdebug.c (ft_debug_init): Highest debug level is 7, + not 6. + * docs/DEBUG: Updated. + +2004-08-30 Werner Lemberg + + * include/freetype/tttags.h (TTAG_BASE, TTAG_GDEF, TTAG_GPOS, + TTAG_JSTF): New tags. + + * include/freetype/fttypes.h (FT_Bytes, FT_Tag): New typedefs. + (FT_Int): Add `signed'. + +2004-08-29 Werner Lemberg + + * src/otlayout/otlgpos.c (otl_gpos_subtable_validate): Add argument + to pass number of lookups. + Update all callers. + Don't call otl_lookup_list_validate but otl_lookup_validate. + (otl_gpos_validate): Call otl_lookup_list_validate instead of + otl_gpos_subtable_validate. + + * src/otlayout/otlgpos.h: Updated. + + * src/otlayout/otljstf.c (otl_jstf_max_validate): Add argument to + pass number of lookups. + Update all callers. + + + * src/cff/cffparse.c (cff_parse_real): s/exp/exponent/ to avoid + compiler warning. + + + * src/sfnt/ttcmap0.c, src/sfnt/ttcmap0.h: Renamed to... + * src/sfnt/ttcmap.c, src/sfnt/ttcmap.h: This. + * src/sfnt/Jamfile, src/sfnt/rules.mk, src/sfnt/sfdriver.c, + src/sfnt/sfnt.c, src/sfnt/sfobjs.c: Updated. + + + * builds/compiler/gcc-dev.mk (CFLAGS): Don't add `-Wnested-externs' + if compiler is g++ (v3.3.3 emits a warning otherwise). + +2004-08-28 Werner Lemberg + + * src/otlayout/otlgpos.c (otl_value_length): Return number of bytes, + not number of 16bit entities. + (otl_gpos_lookup2_validate): Check class definition tables for + format 2. + Fix loop for format 2. + (otl_liga_mark2_validate): Fix offset for otl_anchor_validate. + +2004-08-27 Werner Lemberg + + * src/base/ftmac.c: Don't include truetype/ttobjs.h. + Don't include type1/t1objs.h. + (FT_New_Face_From_FSSpec) [!__MWERKS__]: Remove compiler warnings. + +2004-08-27 Mathieu Malaterre + + * src/base/ftmac.c: Handle OS_INLINE for xlc compiler also. + +2004-08-27 Werner Lemberg + + * src/otlayout/otlayout.h: Add copyright. + (OTL_INVALID_OFFSET): Removed. + + * src/otlayout/otlgdef.h: Include otlayout.h. + Comment out inclusion of otltable.h. + + * src/otlayout/otlgpos.c (otl_gpos_lookup4_validate): Fix call + to otl_base_array_validate. + (otl_liga_mark2_validate): Fix `for' loop. + + * src/otlayout/otlgsub.c (otl_ligature_validate): Check `glyph_id', + not components array. + + * src/otlcommn.c (otl_lookup_get_count, otl_feature_get_count): + Comment out. + (otl_lookup_list_get_count, otl_feature_list_get_count): Activate. + (otl_feature_list_validate, otl_gsubgpos_get_lookup_count): + s/otl_lookup_get_count/otl_lookup_list_get_count/. + (otl_script_list_validate): + s/otl_feature_get_count/otl_feature_list_get_count/. + (otl_script_validate): Call otl_lang_validate for default language. + + * src/otlayout/otlcommn.h: Updated. + +2004-08-16 Werner Lemberg + + * src/otlayout/otlgpos.c (otl_gpos_lookup1_validate, + otl_gpos_lookup2_validate, otl_gpos_lookup3_validate, + otl_gpos_lookup4_validate, otl_gpos_lookup5_validate, + otl_gpos_lookup6_validate, otl_gpos_lookup9_validate, + otl_gpos_validate): Update + function arguments. + (otl_gpos_lookup7_validate, otl_gpos_lookup8_validate): Update + function arguments. + Handle NULL offsets correctly. + Check sequence and lookup indices for format 3. + (otl_pos_rule_validate, otl_chain_pos_rule_validate): Add argument + to pass lookup count. + Check sequence and glyph indices. + (otl_gpos_subtable_validate): Update function arguments. + Update callers. + + * src/otlayout/otlgpos.h: Updated. + + * src/otlayout/otlgsub.c (otl_gsub_lookup1_validate, + otl_gsub_lookup3_validate, otl_gsub_lookup8_validate): Update + function arguments. + Add glyph index checks. + (otl_sequence_validate, otl_alternate_set_validate, + otl_ligature_validate): Add argument to pass glyph count. + Update callers. + Add glyph index check. + (otl_gsub_lookup2_validate, otl_gsub_lookup4_validate): Update + function arguments. + (otl_ligature_set_validate): Add argument to pass glyph count. + Update caller. + (otl_sub_class_rule_validate, + otl_sub_class_rule_set_validate): Removed. + (otl_sub_rule_validate, otl_chain_sub_rule_validate): Add argument + to pass lookup count. + Update callers. + Add lookup index check. + (otl_sub_rule_set_validate, otl_chain_sub_rule_set_validate): Add + argument to pass lookup count. + Update callers. + (otl_gsub_lookup5_validate): Update function arguments. + Handle NULL offsets correctly. + Don't call otl_sub_class_rule_set_validate but + otl_sub_rule_set_validate. + Check sequence and lookup indices for format 3. + (otl_gsub_lookup6_validate): Update function arguments. + Handle NULL offsets correctly. + Check sequence and lookup indices for format 3. + (otl_gsub_lookup7_validate, otl_gsub_validate): Update function + arguments. + + * src/otlayout/otlgsub.h: Updated. + + * src/otlayout/otlbase.c (otl_base_validate): Handle NULL offsets + correctly. + + * src/otlayout/otlcommn.c (otl_class_definition_validate): Fix + compiler warning. + (otl_coverage_get_first, otl_coverage_get_last): New functions. + (otl_lookup_validate): Add arguments to pass lookup and glyph + counts. + Update callers. + (otl_lookup_list_validate): Add argument to pass glyph count. + Update callers. + + * src/otlayout/otlcommn.h: Updated. + + * src/otlayout/otljstf.c (otl_jstf_extender_validate, + otl_jstf_max_validate, otl_jstf_script_validate, + otl_jstf_priority_validate, otl_jstf_lang_validate): Add parameter + to validate glyph indices. + Update callers. + (otl_jstf_validate): Add parameter which specifies number of glyphs + in font. + + * src/otlayout/otljstf.h: Updated. + +2004-08-15 Werner Lemberg + + * src/otlayout/otlgpos.c (otl_liga_mark2_validate): Add parameter + to handle possible NULL values properly. + Update all callers. + +2004-08-15 Werner Lemberg + + * src/otlayout/gpos.c: Rename counting variables to be more + meaningful. + Add copyright. + (otl_liga_attach_validate): Renamed to... + (otl_liga_mark2_validate): This. + Update all callers. + (otl_mark2_array_validate): Removed. + (otl_gpos_lookup6_validate): Call otl_liga_mark2_validate, not + otl_mark2_array_validate. + (otl_pos_class_set_validate, otl_pos_class_rule_validate): Removed. + (otl_gpos_lookup7_validate): Complete code for format 2. + (otl_chain_pos_class_rule_validate, + otl_chain_pos_class_set_validate): Removed. + (otl_gpos_lookup8_validate): Don't call + otl_chain_pos_class_set_validate but + otl_chain_pos_rule_set_validate. + Simplify some code. + + * src/otlayout/otlgpos.h: Add copyright. + +2004-08-14 Werner Lemberg + + * src/otlayout/otljstf.c (otl_jstf_gsub_mods_validate): Removed. + (otl_jstf_gpos_mods_validate): Renamed to... + (otl_jstf_gsubgpos_mods_validate): This. + Test whether lookup_count is zero. + (otl_jstf_priority_validate): Use otl_jstf_gsubgpos_mods_validate. + (otl_jstf_validate): Initialize gsub_lookup_count and + gpos_lookup_count if gsub or gpos is zero. + + * src/otlayout/otlgsub.c: Rename counting variables to be more + meaningful. + Add copyright. + (otl_gsub_lookup1_validate): Simplify code. + (otl_gsub_lookup2_validate, otl_gsub_lookup3_validate, + otl_gsub_lookup4_validate, otl_gsub_lookup7_validate): Remove unused + variables. + (otl_gsub_lookup5_validate): Remove unused variable. + Fix call to otl_sub_rule_set_validate and + otl_sub_class_rule_set_validate. + (otl_chain_sub_class_rule_validate, + otl_chain_sub_class_set_validate): Removed. + (otl_gsub_lookup6_validate): Remove unused variable. + Fix call to otl_chain_sub_rule_set_validate. + (otl_gsub_lookup7_validate): Handle lookup type 8 also. + (otl_gsub_lookup8_validate: New function. + (otl_gsub_lookup1_apply, otl_gsub_lookup2_apply, + otl_gsub_lookup3_apply): Commented out. + (otl_gsub_validate_funcs): Add otl_gsub_lookup7_validate and + otl_gsub_lookup8_validate. + (otl_gsub_validate): Updated. + + * src/otlayout/otlgsub.h: Add copyright. + + * src/otlayout/otlcommn.c, src/otlayout/otlcommn.h + (otl_coverage_get_index): Comment out. + +2004-08-13 Werner Lemberg + + * src/otlayout/otlcommn.c (otl_gsubgpos_get_lookup_count): New + function. + * src/otlayout/otlcommn.h: Updated. + + * src/otlayout/otlbase.c: Rename counting variables to be more + meaningful. + Add copyright message. + * src/otlayout/otlbase.h: Add copyright message. + + * src/otlayout/otlgdef.c: Rename counting variables to be more + meaningful. + Add copyright message. + Use OTL_CHECK everywhere. + (otl_caret_value_validate): Remove unused variable. + (otl_gdef_validate): All tables are optional. + * src/otlayout/otlgdef.h: Add copyright message. + + * src/otlayout/otljstf.c: Rename counting variables to be more + meaningful. + Add copyright message. + (otl_jstf_gsub_mods_validate, otl_jstf_gpos_mods_validate): Add + parameter to pass lookup count. + Update all callers. + Check lookup array. + (otl_jstf_max_validate): + s/otl_gpos_subtable_check/otl_gpos_subtable_validate/. + (otl_jstf_priority_validate, otl_jstf_lang_validate, + otl_jstf_script_validate): Add two parameters to pass lookup counts. + Update all callers. + (otl_jstf_validate): Add two parameters to pass GPOS and GSUB + table offsets; use otl_gsubgpos_get_lookup_count to convert extract + lookup counts. + Fix typo. + * src/otlayout/otljstf.h: Updated. + Add copyright message. + + * src/otlayout/otlgpos.c (otl_gpos_subtable_validate): New function. + (otl_gpos_validate): Use it. + * src/otlayout/otlgpos.h: Updated. + +2004-08-13 Werner Lemberg + + * src/otlayout/otcommn.c: Use OTL_CHECK everywhere. + (otl_coverage_validate): Initialize `p', + s/count/num_glyphs/. + s/start_cover/start_coverage/. + (otl_coverage_get_index): Return OTL_Long, not OTL_Int. + Remove unused variables. + (otl_class_definition_validate): s/count/num_glyphs/. + Remove unused variables. + (otl_class_definition_get_value, otl_device_table_get_start, + otl_device_table_get_end, otl_device_table_get_delta, + otl_lookup_get_table, otl_lookup_list_get_count, + otl_lookup_list_get_lookup, otl_lookup_list_get_table, + otl_feature_get_lookups, otl_feature_list_get_count, + otl_feature_list_get_feature, otl_lang_get_count, + otl_lang_get_req_feature, otl_lang_get_features): Commented out + temporarily until we really need it. + (otl_lookup_validate): Removed. + (otl_lookup_table_validate): Renamed to ... + (otl_lookup_validate): This. Update callers. + (otl_lookup_list_validate): Remove already commented out definition + and move the other definition up. + (otl_feature_validate): Add parameter to pass number of lookups. + Update callers. + Check lookup indices. + (otl_feature_list_validate): Add parameter to pass lookup table. + Update callers. + (otl_lang_validate): Add parameter to pass number of features. + Update callers. + Handle req_feature and check feature indices. + (otl_script_validate): Add parameter to pass number of features. + Update callers. + (otl_script_list_validate): Add parameter to pass feature table. + Update callers. + + * src/otlayout/otcommn.h: s/LOCALDEF/LOCAL/. + Comment out the same functions as in otcommn.c. + (otl_script_list_get_script): Removed. + + * src/otlayout/otlgsub.c (otl_gsub_lookup1_apply): Change `index' to + type OTL_Long. + (otl_gsub_lookup2_apply, otl_gsub_lookup3_apply): Change `index' to + type OTL_Long. + Fix test. + (otl_gsub_validate): Fix order of validation. + + * src/otlayout/otlgpos.c (otl_gpos_validate): Fix order of + validation. + +2004-08-12 Werner Lemberg + + Make otlayout module compile (without actually working). + + * src/otlayout/*: s/OTL_Valid/OTL_Validator/. + s/NULL/0/. + + * src/otlayout/otlayout.h: Fix various typos. + (OTL_Bool): New typedef. + (OTL_Int, OTL_Long, OTL_Int16, OTL_Int32): Use `signed' keyword. + (OTL_Err_InvalidArgument): Removed. + (OTL_Err_InvalidData, OTL_Err_InvalidSize): New enum values. + (OTL_MAKE_TAG): Add missing parenthesis. + (OTL_INVALID_DATA): Use OTL_Err_InvalidData. + (OTL_INVALID_TOO_SHORT): Use OTL_Err_InvalidSize. + (OTL_INVALID_FORMAT, OTL_INVALID_OFFSET): New macros. + + * src/otlayout/otlgpos.c: s/FT_/OTL_/. + s/OTL_Short/OTL_Int16/. + (otl_gpos_pairset_validate): Add return type. + (otl_base_array_validate): Fix call to otl_anchor_validate. + (otl_liga_array_validate): Fix call to otl_liga_attach_validate. + (otl_gpos_lookup5_validate): Fix typos. + (otl_gpos_lookup6_validate): Fix call to otl_mark2_array_validate. + (otl_gpos_lookup7_validate): Comment out unfinished code. + Fix typos. + + * src/otlayout/otlgsub.c: Add forward declaration for + otl_gsub_validate_funcs. + (otl_gsub_lookup1_apply, otl_gsub_lookup2_apply, + otl_gsub_lookup3_apply): Fix call to otl_parser_check_property. + s/otl_coverage_lookup/otl_coverage_get_index/. + (otl_ligature_validate): Add missing variable declaration. + (otl_sub_rule_validate): Fix typo. + (otl_sub_class_rule_validate): Add missing variable declaration. + Fix typo. + (otl_gsub_lookup5_validate): Fix typo. + (otl_gsub_lookup6_validate): Fix call to + otl_chain_sub_class_set_validate. + (otl_gsub_validate_funcs): Don't use `const'. + + * src/otlayout/otlcommn.c (otl_class_definition_get_value, + otl_device_table_validate, otl_device_table_get_delta, + otl_lookup_validate, otl_script_validate): Add missing + variable declarations. + (otl_lookup_list_validate): Comment out first definition. + (otl_lookup_list_foreach, otl_feature_list_foreach): Comment out. + (otl_feature_list_validate): + s/otl_feature_table_validate/otl_feature_validate/. + (otl_script_list_validate): + s/otl_script_table_validate/otl_script_validate/. + + * src/otlayout/otlcommn.h: Comment out first declaration. + (otl_lookup_list_foreach, otl_feature_list_foreach): Comment out. + + * src/otlayout/otlbase.c (otl_base_coord_validate): Fix call to + otl_device_table_validate. + (otl_base_script_validate): Add missing variable declarations. + (otl_base_script_list_validate): Fix call to + otl_base_script_validate. + (otl_axis_table_validate): Fix calls to otl_base_tag_list_validate + and otl_base_script_list_validate. + (otl_base_validate): Fix calls to otl_axis_table_validate. + + * src/otlayout/otlgdef.c (otl_attach_list_validate): Fix call to + otl_attach_point_validate. + (otl_caret_value_validate): Add missing variable declaration. + Fix call to otl_device_table_validate. + (otl_ligature_glyph_validate): Fix call to otl_caret_value_validate. + (otl_ligature_caret_list_validate): Fix call to + otl_ligature_glyph_validate. + (otl_gdef_validate): Fix calls to otl_class_definition_validate, + otl_attach_list_validate, otl_ligature_caret_list_validate, and + otl_class_definition_validate. + + * src/otlayout/otltable.h (otl_table_validate, otl_table_init, + otl_table_set_script): Comment out. + + * src/otlayout/otlparse.h (OTL_ParserRec): + s/OTL_Alternate/OTL_GSUB_Alternate/. + (OTL_ParseError): Add OTL_Err_Parser_Memory and + OTL_Err_Parser_Internal. + (otl_parser_error): Fix typo. + (otl_parser_check_property): Remove third argument. + + * src/otlayout/otlparse.c (otl_string_ensure): + s/OTL_Parse_Err_Memory/OTL_Err_Parser_Memory/. + (OTL_STRING_ENSURE, otl_parser_error, otl_parser_get_index, + otl_parser_replace_1, otl_parser_replace_n): Fix typos. + (OTL_PARSER_UNCOVERED): Removed. + (otl_parser_check_property): Remove third argument. + + * src/otlayout/otljstf.c (otl_jstf_priority_validate): Add missing + variable declaration. + + * src/otlayout/otlutils.h (OTL_MEM_REALLOC): Fix typo. + +2004-08-11 Danny + + * src/base/ftstream.c (FT_Stream_Close): Don't reset stream->close + to NULL. This allows custom close functions to delete the FT_STREAM + object. + +2004-08-11 Werner Lemberg + + Add API to get information about SFNT tables. + + * include/freetype/internal/services/svsfnt.h + (FT_SFNT_Table_Info_Func): New typedef. + (SFNT_Table): Add it. + + * src/base/ftobjs (FT_Sfnt_Table_Info): New function. + + * include/freetype/tttables.h: Updated. + + * src/sfnt/sfdriver.c (sfnt_table_info): New function. + (sfnt_service_sfnt_table): Add it. + + * docs/CHANGES: Updated. + + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 10. + + * builds/unix/configure.ac (version_info): Set to 9:8:3. + * builds/unix/configure: Updated. + + * builds/win32/visualc/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj: s/219/2110/, s/2.1.9/2.1.10/. + + * builds/freetype.mk (refdoc), README, Jamfile (RefDoc): + s/2.1.9/2.1.10/. + + * docs/CHANGES, docs/VERSION.DLL: Updated. + +2004-08-11 Detlef Würkner + + * src/base/ftrfork.c (FT_Raccess_Guess) + [!FT_CONFIG_OPTION_GUESSING_EMBEDDED_FORK]: Remove compiler + warnings. + +2004-08-06 Adam Piotrowski + + * src/pfr/pfrload.c (pfr_sort_kerning_pairs): Single-byte + adjustments are unsigned, not signed. + +2004-08-05 David Turner + + `Activate' gray-scale specifing hinting within the TrueType + bytecode interpreter. This is an experimental feature which + should probably be made optional. + + * src/truetype/ttgload.c (TT_Process_Simple_Glyph, + load_truetype_glyph): Move the code to set the pedantic_hinting flag + to... + (TT_Load_Glyph): Here. + Set `grayscale' flag except for `FT_LOAD_TARGET_MONO'. + + * src/truetyep/ttinterp.c (Ins_GETINFO): Return MS rasterizer + version 1.7. + Return rotation and stretching info only if glyph is rotated or + stretched, respectively. + Handle grayscale info. + + * src/truetype/ttinterp.h (TT_ExecContextRec): Add `grayscale' + member. + +2004-08-02 George Williams + + * src/base/ftobjs.c (FT_Attach_File): Initialize `open.stream'. + +2004-08-01 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-08-01 George Williams + + FreeType now can read kerning values from PFM files. + + * src/type1/t1afm.c (T1_Done_AFM): Renamed to... + (T1_Done_Metrics): This. + Update all callers. + (T1_Read_AFM): Make it static. + Don't enter and leave a frame. + (LITTLE_ENDIAN_USHORT, LITTLE_ENDIAN_UINT): New macros. + (T1_Read_PFM): New function. + (T1_Read_Metrics): New higher-level function to be used instead of + T1_Read_AFM. + Update all callers. + +2004-07-31 Werner Lemberg + + * src/pcf/pcfread (pcf_load_font), src/bdf/bdfdrivr.c + (BDF_Face_Init), src/truetype/ttgxvar (TT_Get_MM_Var, + tt_face_vary_cvt): Fix compiler warnings. + +2004-07-26 Søren Sandmann + + * src/pcf/pcfread.c (pcf_interpret_style): Always allocate memory for + face->style_name. + * src/pcf/pcfdrivr.c (PCF_Face_Done): Free `style_name'. + +2004-07-26 Darren J Longhorn + + * include/freetype/config/ftconfig.h (FT_SIZEOF_LONG): Recognize + five-byte `long' (which is avoided then). + +2004-07-25 Detlef Würkner + + * src/pcf/pcfdrivr.c (PCF_Set_Pixel_Size): Compare heights, not + ppem values. + (PCF_Set_Point_Size): Don't call PCF_Set_Pixel_Size but provide own + code to compare ppem values. + * src/bdf/bdfdrivr.c (BDF_Set_Pixel_Size): Compare heights, not + ppem values. + (BDF_Set_Point_Size): Don't call BDF_Set_Pixel_Size but provide own + code to compare ppem values. + +2004-07-25 Kornfeld Eliyahu Peter + + * src/sfnt/sfobjs.c (sfnt_load_face): Handle + TT_NAME_ID_PREFERRED_FAMILY and TT_NAME_ID_PREFERRED_SUBFAMILY. + +2004-07-24 Derek B. Noonburg + + * src/cff/cffload.c (cff_font_load): Always create inverse mapping. + Even if the charstring count is the same as the CID count, it is + still possible that the font uses a different CID -> GID mapping. + +2004-07-23 Werner Lemberg + + * src/truetype/ttobjs.c (tt_face_init): Accept 0x00020000 format tag + found in some Arphic fonts made for Chinese version of Windows 3.1. + +2004-07-17 David Turner + + Fixed a dangling pointer bug in the cache code that happened in very + rare cases, i.e., when a new family object was destroyed by an + out-of-memory condition during a glyph node initialization. The + function FTC_Cache_Lookup would flush the cache and restart the + lookup with a bad pointer. + + * include/freetype/cache/ftcglyph.h (FTC_FAMILY_TREE): New macro. + (FTC_GCACHE_LOOKUP_CMP): Use it. + Handle reference count in `num_nodes' correctly. + + * src/cache/ftcglyph.c (FTC_GNode_UnselectFamily): Use + FTC_FAMILY_FREE. + (FTC_GCache_Lookup): Handle reference count in `num_nodes' correctly. + + * src/cache/ftcmanag.c (FTC_Manager_FlushN): Fixed a cache flushing + bug. + + * src/truetype/ttinterp.c (Normalize): Fixed a bug that caused + long and unnecessary delays while normalizing huge vectors. + +2004-07-15 Werner Lemberg + + * docs/CHANGES: Updated. + + * src/base/ftstroke.c (FT_Stroker_ParseOutline): Fix compiler + warning. + +2004-07-15 David Turner + + * src/base/ftstroke.c (FT_Stroker_ParseOutline): Single points + are not stroked, preventing a bug with pala.ttf and other + fonts. + + * include/freetype/ftstroke.h: Updating documentation comments. + +2004-07-13 Werner Lemberg + + * src/base/ftstroke.c (ft_stroke_border_reverse): Removed. Unused. + +2004-07-12 David Turner + + * src/base/ftstroke.c (ft_stroke_border_close): Add second parameter + to indicate reversion of points. + Update all callers. + (ft_stroke_border_reverse): Fix initialization of `point1' and + `tag1'. + + * src/cache/ftcsbits.c (ftc_snode_load): Fixing advance computation + for transformed glyphs. + +2004-07-11 David Turner + + Fix bugs that prevented the stroker to correctly generate stroked + paths from closed paths, i.e., nearly all glyphs in vectorial fonts. + + The code is still _very_ buggy though; treat with special care. + + * src/base/ftstroke.c (FT_STROKE_TAG_BEGIN_END): New macro. + (ft_stroke_border_reverse): New function. + (ft_stroker_inside): Remove local variable `sigma'; use different + threshold. + (ft_stroker_add_reverse_left): Switch begin/end tags if necessary. + (FT_Stroker_EndSubPath): Call ft_stroker_inside and + ft_stroke_border_reverse. + +2004-06-26 Peter Kovar + + * src/truetype/ttgload.c (load_truetype_glyph): Fix typo. + +2004-06-25 Werner Lemberg + + * src/type1/t1afm.c (afm_atoindex): Fix boundary test. Reported + by Dirck Blaskey. + +2004-06-24 David Turner + + + * Version 2.1.9 released. + ========================= + + + * src/truetype/ttgload.c, src/truetype/ttxgvar.c: Removing + compiler warnings. + +2004-06-23 Werner Lemberg + + * include/freetype/internal/ftmemory.h [FT_DEBUG_MEMORY]: Declare + FT_QAlloc_Debug and FT_QRealloc_Debug. + + * src/base/ftutil.c (FT_QAlloc): Fix error and debug messages. + (FT_QRealloc): Call FT_QAlloc if original pointer is NULL. + Fix error message. + +2004-06-23 David Turner + + * include/freetype/internal/ftmemory.h, src/base/ftutil.c + (FT_QAlloc, FT_QRealloc), src/base/ftdbgmem.c (FT_QAlloc_Debug, + FT_QRealloc_Debug): New functions that perform allocation without + zero-ing out the corresponding blocks. + + * include/freetype/internal/ftmemory.h (FT_MEM_QALLOC, + FT_MEM_QREALLOC, FT_MEM_QNEW, FT_MEM_QNEW_ARRAY, + FT_MEM_QRENEW_ARRAY, FT_QALLOC, FT_QREALLOC, FT_QNEW, FT_QNEW_ARRAY, + FT_QRENEW_ARRAY): New macros. + + * src/base/ftstream.c (FT_Stream_EnterFrame): Use FT_QALLOC. + * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Use FT_QNEW_ARRAY. + * src/sfnt/sfobjs.c (tt_face_get_name): Use FT_QNEW_ARRAY. + + * src/sfnt/ttload.c (tt_face_load_directory, tt_face_load_metrics, + tt_face_load_gasp): Use FT_QNEW_ARRAY. + (tt_face_load_kern): Use FT_QNEW_ARRAY. + Small optimization in the kerning table verifier; this speeds up + TrueType face opening by about 7%. + (tt_face_load_hdmx): Use FT_QNEW_ARRAY and FT_QALLOC. + + * include/freetype/config/ftmodule.h: Changed the order of modules, + putting TrueType and Type 1 first. This dramatically improves the + performance of face open/close operations. For example, putting the + TrueType driver first in the list results in a 5x speedup when + opening `Vera.ttf'. + + The very problem is that both the PCF and BDF drivers do a lot more + than necessary to detect that they cannot handle a font file. + +2004-06-22 Werner Lemberg + + * src/pcf/pcfread.c (pcf_read_TOC, pcf_get_properties, + pcf_get_metrics, pcf_get_bitmaps, pcf_get_encodings): Improve + debugging messages. + + * src/pcf/pcfdrivr.c (FT_COMPOMENT): Move up. + (PCF_Face_Init): Simplify code. + + * src/bdf/bdfdrivr.h (BDF_FaceRec): New element `default_glyph'. + + * src/bdf/bdflib.c (_bdf_add_property, _bdf_parse_start), + src/bdf/bdf.h (bdf_font_t): s/default_glyph/default_char/. + + * src/bdf/bdfdrivr.c (BDF_Face_Init): Fix number of glyphs. + Set `default_glyph'. + (BDF_Glyph_Load): Use `default_glyph' for undefined glyph. + + * docs/CHANGES: Updated. + +2004-06-21 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-06-21 David Turner + + * src/truetype/ttgload.c (TT_Process_Simple_Glyph, + load_truetype_glyph): Don't access (unrounded) + `TT_Size.root.metrics' but (rounded) `TT_Size.metrics'. This fixes + a scaling bug that caused incorrect rendering when the bytecode + interpreter was enabled. + +2004-06-14 Huw D M Davies + + * src/winfonts/winfnt.c (FNT_Face_Init): Set x_ppem and y_ppem + based on pixel_width and pixel_height. + (FNT_Size_Set_Pixels): Updated. + +2004-06-14 Werner Lemberg + + * src/lzw/zopen.c: Comment out inclusion of signal.h and unistd.h. + Reported by Hyvärinen Jyrki Juhani. + +2004-06-11 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-06-10 David Turner + + * src/base/ftobject.c, src/base/fthash.c, src/base/ftexcept.c, + src/base/ftsysio.c, src/base/ftsysmem.c, src/base/ftlist.c: Removed. + Obsolete. + + * src/raster/ftraster.c (Alignment, PAlignment): New union to fix + problems with 64bit systems. + (AlignProfileSize): Use it. + +2004-06-08 David Turner + + * include/freetype/freetype.h (FT_GlyphMetrics): Move `lsb_delta' + and `rsb_delta' elements to... + (FT_GlyphSlotRec): Here to retain binary compatibility with older + FreeType versions. + Update all users. + + * src/sfnt/sfobjs.c (tt_face_get_name): Remove compiler warning. + + * src/winfonts/winfnt.c (FNT_Load_Glyph): Add missing initialization + of slot->metrics.width and slot->metrics.height when loading a + Windows FNT glyph. Thanks to Huw Davies. + + * include/freetype/cache/ftcmru.h (FTC_MruNode_CompareFunc): Change + return type to FT_Bool. + + * src/cache/ftbasic.c (ftc_basic_family_compare): Change return + type to FT_Bool. + + * src/cache/ftccache.c (FTC_Cache_Init, ftc_cache_init): Make + the former call the latter, not vice versa. + (FTC_Cache_Done, ftc_cache_done): Ditto. + + * src/cache/ftcglyph.c (FTC_GNode_Compare, ftc_gnode_compare): Make + the former call the latter, not vice versa. + (FTC_GCache_Init, ftc_gcache_init): Ditto. + (FTC_GCache_Done, ftc_gcache_done): Ditto. + + * src/cache/ftcimage.c (FTC_INode_Free, ftc_inode_free): Make the + former call the latter, not vice versa. + (FTC_INode_Weight, ftc_inode_weight): Ditto. + + * src/cache/ftcmanag.c (ftc_size_node_compare, + ftc_size_node_compare_faceid, ftc_face_node_compare): Change return + type to FT_Bool. + + * src/cache/ftcsbits.c (FTC_SNode_Free, ftc_snode_free): Make the + former call the latter, not vice versa. + (FTC_SNode_Weight, ftc_snode_weight): Ditto. + (FTC_SNode_Compare, ftc_snode_compare): Ditto. + + * src/cache/ftcsbits.c: Fix some bugs and inefficiencies in the cache + sub-system. + +2004-06-05 Werner Lemberg + + * src/autofit/afloader.c (af_loader_load_g): Set `lsb_delta' and + `rsb_delta' in slot->metrics and tune side bearings slightly. + +2004-06-04 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-06-04 David Chester + + Improve inter-letter spacing for autohinted glyphs. + + * include/freetype/freetype.h (FT_Glyph_Metrics): Add elements + `lsb_delta' and `rsb_delta'. + + * src/autohint/ahhint.c (ah_hinter_load): Set `lsb_delta' and + `rsb_delta' in slot->metrics and tune side bearings slightly. + +2004-06-04 David Turner + + * src/autofit/*: Important fixes to the auto-fitter. The output + now seems to be 100% equivalent to the auto-hinter, while being + about 2% faster (which proves that script-specific algorithm + selection isn't a performance problem). + + To test it, change `autohint' to `autofit' in + and recompile. + + A few more testing is needed before making this the official + auto-hinting module. + +2004-06-02 Werner Lemberg + + * src/truetype/ttgload.c (compute_glyph_metrics): Fix compiler + warnings. + +2004-06-01 Werner Lemberg + + * src/sfnt/sfobjs.c (tt_face_get_name): Make sure that an English + name record for the Apple platform is preferred to a non-English + entry for the Microsoft platform. Problem reported by HANDA + Ken'ichi. + +2004-05-19 George Williams + + * src/type1/t1load.c (mm_axis_unmap, mm_weights_unmap): New + auxiliary functions. + (T1_Get_MM_Var): Provide axis tags. + Use mm_axis_unmap and mm_weights_unmap to provide default values + for design and normalized axis coordinates. + + * include/freetype/t1tables.h (PS_DesignMapRec): Change type of + `design_points' to FT_Long. + Update all users. + +2004-05-17 Werner Lemberg + + * src/base/ftbbox.c (BBox_Conic_Check): Fix boundary cases. + Reported by Mikey Anbary . + +2004-05-15 Werner Lemberg + + * src/sfnt/sfobjs.c (sfnt_done_face): Free face->postscript_name. + +2004-05-15 George Williams + + * src/sfnt/ttload.c (tt_face_load_max_profile): Always set + face->root.num_glyphs. + +2004-05-14 Masatake YAMATO + George Williams + + * src/sfnt/ttload.c (sfnt_dir_check): Handle `bhed' properly. + +2004-05-14 Werner Lemberg + + * src/cache/ftcbasic.c (ftc_basic_family_compare, + ftc_basic_family_init, ftc_basic_family_get_count, + ftc_basic_family_load_bitmap, ftc_basic_family_load_glyph, + ftc_basic_gnode_compare_faceid): Adjust parameters and return types + to prototypes given in header files from include/freetype/cache. + Use casts to proper types locally. + (ftc_basic_image_family_class, ftc_basic_image_cache_class, + ftc_basic_sbit_family_class, ftc_basic_sbit_cache_class): Remove + casts. + + * src/cache/ftccback.h: Adjust parameters and return types to + prototypes given in header files from include/freetype/cache. + + * src/cache/ftcimage.c (ftc_inode_free, ftc_inode_new, + ftc_inode_weight): Adjust parameters and return types to prototypes + given in header files from include/freetype/cache. Use casts to + proper types locally. + + * src/cache/ftcsbits.c (ftc_snode_free, ftc_snode_new, + ftc_snode_weight, ftc_snode_compare): Adjust parameters and return + types to prototypes given in header files from + include/freetype/cache. Use casts to proper types locally. + + * src/cache/ftccmap.c (ftc_cmap_node_free, ftc_cmap_node_new, + ftc_cmap_node_weight, ftc_cmap_node_compare, + ftc_cmap_node_remove_faceid): Adjust parameters and return types to + prototypes given in header files from include/freetype/cache. Use + casts to proper types locally. + (ftc_cmap_cache_class): Remove casts. + + * src/cache/ftcglyph.c (ftc_gnode_compare, ftc_gcache_init, + ftc_gcache_done): Adjust parameters and return types to prototypes + given in header files from include/freetype/cache. Use casts to + proper types locally. + + * src/cache/ftcmanag.c (ftc_size_node_done, ftc_size_node_compare, + ftc_size_node_init, ftc_size_node_reset, + ftc_size_node_compare_faceid, ftc_face_node_init, + ftc_face_node_done, ftc_face_node_compare: Adjust parameters and + return types to prototypes given in header files from + include/freetype/cache. Use casts to proper types locally. + + (ftc_size_list_class, ftc_face_list_class): Remove casts. + +2004-05-13 Werner Lemberg + + * src/autohint/ahmodule.c (ft_autohinter_init, ft_autohinter_done): + Use FT_Module as parameter and do a cast to FT_AutoHinter locally. + (autohint_module_class): Remove casts. + + * src/base/ftglyph.c (ft_bitmap_glyph_init, ft_bitmap_glyph_copy, + ft_bitmap_glyph_done, ft_bitmap_glyph_bbox, ft_outline_glyph_init, + ft_outline_glyph_done, ft_outline_glyph_copy, + ft_outline_glyph_transform, ft_outline_glyph_bbox, + ft_outline_glyph_prepare): Use FT_Glyph as parameter and do a cast + to FT_XXXGlyph locally. + Use FT_CALLBACK_DEF throughout. + (ft_bitmap_glyph_class, ft_outline_glyph_class): Remove casts. + + * src/bdf/bdfdrivr.c (bdf_cmap_init, bdf_cmap_done, + bdf_cmap_char_index, bdf_cmap_char_next): Use FT_CMap as parameter + and do a cast to BDF_CMap locally. + (bdf_cmap_class): Remove casts. + +2004-05-12 Werner Lemberg + + * src/cff/cffgload.h (CFF_Builder): Remove `error'. + * src/cff/cffgload.c (cff_decoder_parse_charstrings): Replace + `Memory_Error' with `Fail' und update all users. + +2004-05-11 Werner Lemberg + + * include/freetype/internal/psaux.h (T1_ParseState): New + enumeration. + (T1_BuilderRec): Replace `path_begun' with `parse_state'. + Remove `error'. + * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Replace + `Memory_Error' with `Fail' and update all users. + Don't use `builder->error'. + Replace `path_begun' with `parse_state' and check parsing states. + + * src/psaux/psobjs.c (t1_builder_init, t1_builder_start_point): + Replace `path_begun' with `parse_state' and check parsing states. + +2004-05-10 George Williams + + * src/truetype/ttxgvar.c (ft_var_load_avar): Do free arrays in case + of error -- `avar' is optional so we can't rely on tt_done_blend + being called automatically. + +2004-05-09 George Williams + + * src/truetype/ttxgvar.c (ft_var_load_avar, ft_var_load_gvar): Fix + error handling. + +2004-05-07 Werner Lemberg + + * src/pfr/pfrobjs.c, src/pfr/pfrobjs.h (pfr_face_init, + pfr_face_done, pfr_face_get_kerning, pfr_slot_init, pfr_slot_done, + pfr_slot_load): Don't use PFR_XXX but FT_XXX arguments which are + typecast to the proper PFR_XXX types within the function. + Update code accordingly. + + * src/pfr/pfrdrivr.c (pfr_get_kerning, pfr_get_advance, + pfr_get_metrics, pfr_get_service): Don't use PFR_XXX but FT_XXX + arguments which are typecast to the proper PFR_XXX types within the + function. + Update code accordingly. + Use FT_CALLBACK_DEF throughout. + (pfr_metrics_service_rec, pfr_driver_class): Remove casts. + +2004-05-06 Masatake YAMATO + + * src/truetype/ttgxvar.c (ft_var_load_gvar): Use FT_FACE_STREAM. + (*): Rename local variable OffsetToData to offsetToData. + +2004-05-06 Werner Lemberg + + * src/cff/cffobjs.c (cff_size_done, cff_size_init, cff_size_reset, + cff_slot_done, cff_slot_init, cff_face_init, cff_face_done): Access + root fields directly. + * src/cff/cffdrivr.c (Load_Glyph): Access root fields directly. + + * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Save current + frame before calling TT_Vary_Get_Glyph_Deltas. + + * src/pcf/pcfdrivr.c (PCF_CMapRec): Rename `cmap' to `root' for + consistency. + (pcf_cmap_init, pcf_cmap_done, pcf_cmap_char_index, + pcf_cmap_char_next): Don't use PCF_XXX but FT_XXX arguments which + are typecast to the proper PCF_XXX types within the function. + Update code accordingly. + (pcf_cmap_class): Remove casts. + (PCF_Face_Done, PCF_Face_Init, PCF_Set_Pixel_Size): Don't use + PCF_XXX but FT_XXX arguments which are typecast to the proper + PCF_XXX types within the function. + Update code accordingly. + Use FT_CALLBACK_DEF throughout. + (PCF_Set_Point_Size): New wrapper function. + (PCF_Glyph_Load, pcf_driver_requester): Use FT_CALLBACK_DEF. + (pcf_driver_class): Remove casts. + +2004-05-04 Steve Hartwell + + * src/truetype/ttobjs.c (tt_driver_done): Fix typo. + +2004-05-04 Werner Lemberg + + * src/bdf/bdfdrivr.c (BDF_Face_Done, BDF_Face_Init, + BDF_Set_Pixel_Size): Don't use BDF_XXX but FT_XXX arguments which + are typecast to the proper BDF_XXX types within the function. + Update code accordingly. + Use FT_CALLBACK_DEF throughout. + (BDF_Set_Point_Size): New wrapper function. + (bdf_driver_class): Remove casts. + + * src/cff/cffdrivr.c (Get_Kerning, Load_Glyph, cff_get_interface): + Don't use CFF_XXX but FT_XXX arguments which are typecast to the + proper CFF_XXX types within the function. + Update code accordingly. + Use FT_CALLBACK_DEF throughout. + (cff_driver_class): Remove casts. + + * src/cff/cffobjs.h, src/cff/cffobjs.c (cff_size_done, + cff_size_init, cff_size_reset, cff_slot_done, cff_slot_init, + cff_face_init, cff_face_done, cff_driver_init, cff_driver_done): + Don't use CFF_XXX but FT_XXX arguments which are typecast to the + proper CFF_XXX types within the function. + Update code accordingly. + (cff_point_size_reset): New wrapper function. + + * src/cid/cidobjs.h, src/cid/cidobjs.c (cid_slot_done, + cid_slot_init, cid_size_done, cid_size_init, cid_size_reset, + cid_face_done, cid_face_init, cid_driver_init, cid_driver_done): + Don't use CID_XXX but FT_XXX arguments which are typecast to the + proper CID_XXX types within the function. + Update code accordingly. + (cid_point_size_reset): New wrapper function. + + * src/cid/cidgload.c, src/cid/cidgload.h (cid_slot_load_glyph): + Don't use CID_XXX but FT_XXX arguments which are typecast to the + proper CID_XXX types within the function. + Update code accordingly. + + * src/cid/cidriver.c (cid_get_interface): + Don't use CID_XXX but FT_XXX arguments which are typecast to the + proper CID_XXX types within the function. + Update code accordingly. + Use FT_CALLBACK_DEF. + (t1cid_driver_class): Remove casts. + + * src/truetype/ttdriver.c (tt_get_interface): Use FT_CALLBACK_DEF. + * src/truetype/ttgxvar.c (ft_var_load_avar): Don't free non-local + variables (this is done later). + (ft_var_load_avar): Fix call to FT_FRAME_ENTER. + (TT_Get_MM_Var): Fix size for `fvar_fields'. + (TT_Vary_Get_Glyph_Deltas): Handle deallocation of local variables + correctly. + + * src/base/ftdbgmem.c (ft_mem_debug_realloc): Don't abort if + current size is zero. + +2004-05-03 Steve Hartwell + + * src/truetype/ttobjs.h, src/truetype/ttobjs.c (tt_face_init, + tt_face_done, tt_size_init, tt_size_done, tt_driver_init, + tt_driver_done): Don't use TT_XXX but FT_XXX arguments which are + typecast to the proper TT_XXX types within the function. + Update code accordingly. + + * src/truetype/ttdriver.c (Get_Kerning, Set_Char_Sizes, + Set_Pixel_Sizes, Load_Glyph, tt_get_interface): Don't use TT_XXX but + FT_XXX arguments which are typecast to the proper TT_XXX types + within the function. + Update code accordingly. + (tt_driver_class): Remove casts. + +2004-05-02 Werner Lemberg + + * src/sfnt/ttload.c (tt_face_free_names): Check that `table->names' + is not NULL. Reported by Gordon Childs . + +2004-04-29 Werner Lemberg + + * docs/formats.txt: Add more information on PFR format. + +2004-04-28 Werner Lemberg + + * docs/formats.txt: New file. + * docs/CHANGES: Updated. + +2004-04-28 Masatake YAMATO + + * include/freetype/internal/tttypes.h (GX_BlendRec_) + [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Fix a typo. + + * src/truetype/ttgxvar.h (GX_BlendRec_): Fix a typo. + +2004-04-27 Masatake YAMATO + + * src/truetype/ttgxvar.h: Use FT_LOCAL instead of FT_LOCAL_DEF + for function declarations. + +2004-04-25 George Williams + + * src/truetype/ttgxvar.c (ft_var_apply_tuple): Fix typo. + +2004-04-25 Werner Lemberg + + * src/truetype/Jamfile, docs/CHANGES: Updated. + +2004-04-24 Werner Lemberg + + * src/pcf/pcfdrivr.c: Revert change from 2004-04-17. + * src/pcf/pcfutil.c: Use FT_LOCAL_DEF. + * src/pcf/pcfutil.h: Include FT_CONFIG_CONFIG_H. + Use FT_BEGIN_HEADER and FT_END_HEADER. + Use FT_LOCAL. + +2004-04-24 George Williams + + Add support for Apple's distortable font technology (in GX fonts). + + * devel/ftoption.h, include/freetype/config/ftoption.h + (TT_CONFIG_OPTION_GX_VAR_SUPPORT): New macro. + + * include/freetype/ftmm.h (FT_Var_Axis, FT_Var_Named_Style, + FT_MM_Var): New structures. + (FT_Get_MM_Var, FT_Set_Var_Design_Coordinates, + FT_Set_Var_Blend_Coordinates): New function declarations. + + * include/freetype/internal/services/svmm.h (FT_Get_MM_Var_Func, + FT_Set_Var_Design_Func): New typedefs. + Update MultiMasters service. + + * include/freetype/internal/tttypes.h + [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include FT_MULTIPLE_MASTERS_H. + (GX_Blend) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New typedef. + (TT_Face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New members `doblend' + and `blend'. + + * include/freetype/tttags.h (TTAG_avar, TTAG_cvar, TTAG_gvar): New + macros. + + * include/freetype/internal/fttrace.h: Add `ttgxvar'. + + * src/base/ftmm.c (FT_Get_MM_Var, FT_Set_Var_Design_Coordinates, + FT_Set_Var_Blend_Coordinates): New functions. + + * src/sfnt/sfobjs.c (sfnt_load_face) + [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Set FT_FACE_FLAG_MULTIPLE_MASTERS + flag for GX var fonts. + + * src/truetype/ttgxvar.c, src/truetype/ttgxvar.h: New files. + + * src/truetype/truetype.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include + ttgxvar.c. + + * src/truetype/ttdriver.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include + FT_MULTIPLE_MASTERS_H, FT_SERVICE_MULTIPLE_MASTERS_H, and ttgxvar.h. + (tt_service_gx_multi_masters) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: + New service. + (tt_services) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated. + + * src/truetype/ttgload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include + ttgxvar.h. + (TT_Process_Simple_Glyph, load_truetype_glyph) + [TT_CONFIG_OPTION_GX_VAR_SUPPORT] :Support GX var fonts. + + * src/truetype/ttobjs.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include + ttgxvar.h. + (tt_done_face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call + tt_done_blend. + + * src/truetype/ttpload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include + ttgxvar.h. + (tt_face_load_cvt) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call + tt_face_vary_cvt. + + * src/truetype/rules.mk (TT_DRV_SRC): Add ttgxvar.c. + + * src/type1/t1driver.c (t1_service_multi_masters): Add T1_Get_MM_Var + and T1_Set_Var_Design. + + * src/type1/t1load.c (FT_INT_TO_FIXED, FT_FIXED_TO_INT): New macros. + (T1_Get_MM_Var, T1_Set_Var_Design): New functions. + + * src/type1/t1load.h (T1_Get_MM_Var, T1_Set_Var_Design): New + function declarations. + +2004-04-23 Werner Lemberg + + * include/freetype/ftcache.h (FT_Get_CharMap_Index): Rename + declaration and move to... + * include/freetype/freetype.h (FT_Get_Charmap_Index): Here. + (FREETYPE_PATCH): Set to 9. + + * src/base/ftobjs.c (FT_Get_Charmap_Index): New function. + + * builds/unix/configure.ac (version_info): Set to 9:7:3. + * builds/unix/configure: Updated. + + * builds/win32/visualc/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj: s/218/219/. + + * builds/freetype.mk (refdoc), README, Jamfile (RefDoc): + s/2.1.8/2.1.9/. + + * docs/CHANGES, docs/VERSION.DLL: Updated. + +2004-04-21 Werner Lemberg + + * src/cff/cffparse.c (cff_parser_run), src/psaux/psobjs.c + (ps_parser_load_field): Use FT_CHAR_BIT. + +2004-04-21 David Turner + + + * Version 2.1.8 released. + ========================= + + + * src/cff/cffobjs.c (cff_face_init): Fix a small memory leak. + + * src/autofit/afloader.c (af_loader_load_g), src/autofit/afmodule.c + (af_autofitter_load_glyph), src/base/ftdebug.c (FT_Trace_Get_Name): + Remove compiler warnings. + + * src/autofit/aftypes.h: Undefine AF_DEBUG. + + * src/lzw/zopen.c (rmask), src/pcf/pcfdrivr.c (pcf_service_bdf, + pcf_services), src/pcf/pcfread.c (tableNames), src/psaux/psobjs.c + (ft_char_table), src/type42/t42drivr.c (t42_service_glyph_dict, + t42_service_ps_font_name): Decorate data arrays with `const' to + avoid populating the `.data' segment. + + * src/lzw/Jamfile: New file. + +2004-04-20 Werner Lemberg + + * src/psaux/psobjs.c (T1Radix): Renamed to... + (ps_radix): This. + Update current cursor position. + + * docs/CHANGES: Updated. + +2004-04-18 Werner Lemberg + + * src/truetype/ttgload.c, src/truetype/ttgload.h (TT_Load_Glyph), + src/ttdriver.c (Load_Glyph): Change type of `glyph_index' to + FT_UInt. From Lex Warners. + +2004-04-17 Chisato Yamauchi + + * src/sfnt/ttload.c (tt_face_load_sfnt_header): Really fix change + from 2004-03-19. + + * src/bdf/bdfdrivr.c (BDF_Face_Init): Use `ft_strlen'. + + * src/pcf/pcfutil.c, src/pcf/pcfutil.h: Decorate functions with + `static'. + Remove unused function `RepadBitmap'. + * src/pcf/pcfdrivr.c: Don't include pcfutil.h. + +2004-04-16 Werner Lemberg + + * builds/unix/freetype-config.in (usage): Fix and improve usage + information. + +2004-04-15 Werner Lemberg + + * builds/unix/ftconfig.in, builds/vms/ftconfig.h: Define + FT_CHAR_BIT. + + * src/base/ftobjs.c (FT_Load_Glyph): Don't apply autohinting if + glyph is vertically distorted or mirrored. + + * src/cff/cffgload.c (cff_slot_load): Handle zero `size' properly + for embedded bitmaps. + + * docs/CHANGES: Updated. + +2004-04-15 bytesoftware + + * include/freetype/config/ftconfig.h, src/base/ftstream.c + (FT_Stream_ReadFields): More fixes using FT_CHAR_BIT. + +2004-04-14 Werner Lemberg + + * include/freetype/config/ftconfig.h (FT_CHAR_BIT): New macro. + +2004-04-14 Alex Strelnikov + + * src/cache/ftcsbits.c (ftc_snode_load): Initialize `*asize' in case + of error. + +2004-04-14 Werner Lemberg + + * src/base/ftmac.c [__GNUC__]: Define OS_INLINE. + * builds/unix/configure.ac: Don't try to remove `-ansi' compilation + switch on the Mac. + + * builds/unix/ltmain.sh: Regenerated with `libtoolize --force + --copy' from libtool 1.5.6. + * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from + automake 1.8a. + * builds/unix/configure: Regenerated with autoconf 2.59a. + +2004-04-13 Werner Lemberg + + * include/freetype/config/ftconfig.h: Use CHAR_BIT to define + size of FT_SIZEOF_xxx. + +2004-04-12 Chisato Yamauchi + + * include/freetype/internal/sfnt.h (TT_Find_SBit_Image_Func, + TT_Load_SBit_Metrics_Func): New typedefs. + (SFNT_Interface): Add find_sbit_image and load_sbit_metrics. + + * src/sfnt/sfdriver.c (sfnt_interface): Updated. + * src/sfnt/ttsbit.h (tt_find_sbit_image, tt_load_sbit_metrics): New + declarations. + * src/sfnt/ttsbit.c (find_sbit_image): Renamed to... + (tt_find_sbit_image): This. + Updated all callers. + (load_sbit_metrics): Renamed to... + (tt_load_sbit_metrics): This. + Updated all callers. + +2004-04-12 Werner Lemberg + + * configure: Accept makepp also. + + * builds/unix/detect.mk: Use proper path to unix-def.mk. + * builds/unix/unix-def.in (BUILD_DIR, PLATFORM): Remove. + * builds/unix/unix.mk (BUILD_DIR, PLATFORM): Define. + Use BUILD_DIR. + + * docs/INSTALL, docs/INSTALL.GNU, docs/INSTALL.UNX: Update + documentation on makepp. + +2004-04-11 Werner Lemberg + + * src/lzw/zopen.c: Don't include sys/param.h and sys/stat.h. + +2004-04-10 Werner Lemberg + + * src/lzw/ftlzw.c: Include zopen.h dependent on + FT_CONFIG_OPTION_USE_LZW. + + * src/base/ftdebug.c: s/index/idx/ to avoid compiler warnings. + +2004-04-02 Werner Lemberg + + * builds/unix/ltmain.sh: Regenerated with `libtoolize --force + --copy' from libtool 1.5.2. + * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from + automake 1.8a. + * builds/unix/configure: Regenerated with autoconf 2.59a. + +2004-04-01 Werner Lemberg + + * builds/unix/ft-munmap.m4 (FT_MUNMAP_PARAM): Fix arguments of + AC_COMPILE_IFELSE. + * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from + automake 1.8a. + * builds/unix/configure: Regenerated with autoconf 2.59a. + * builds/unix/config.guess, builds/unix/config.sub: Updated from + `config' CVS module at subversions.gnu.org. + * builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from + `texinfo' CVS module at subversions.gnu.org. + * builds/freetype.mk (refdoc): Updated. + +2004-03-31 Werner Lemberg + + Handle broken FNT files which don't have a trailing NULL byte + in the face name string. + + * src/winfonts/winfnt.h (FNT_FontRec): New member `family_name'. + * src/winfonts/winfnt.c (fnt_font_done): Free font->family_name. + (FNT_Face_Init): Append a final zero byte to the font face name. + +2004-03-30 Werner Lemberg + + * src/sfnt/ttload.c (tt_face_load_sfnt_header): Fix change from + 2004-03-19. + +2004-03-27 Werner Lemberg + + * src/base/descrip.mms (OBJS): Add ftbbox.obj. + +2004-03-26 George Williams + + Add vertical phantom points. + + * include/freetype/internal/tttypes.h (TT_LoaderRec): Add + `top_bearing', `vadvance', `pp3', and `pp4'. + + * src/autofit/afloader.c (af_loader_load_g): Handle two more points. + + * src/autohint/ahhint.c (ah_hinter_load): Handle two more points. + * src/truetype/ttgload.c (Get_VMetrics): New function. + (TT_Load_Simple_Glyph, TT_Process_Simple_Glyph): Handle two more + points. + (load_truetype_glyph): Use Get_VMetrics. + Handle two more points. + (compute_glyph_metrics): Thanks to vertical phantom points we now + can always compute `advance_height' and `top_bearing'. + * src/truetype/ttobjs.h (TT_SubglyphRec): Add vertical phantom + points. + + + * src/autohint/ahglyph.c (ah_outline_load): Fix allocation of + `news'. + +2004-03-21 Werner Lemberg + + * src/bdf/bdfdrivr.c (BDF_Glyph_Load): Fix left side bearing. + +2004-03-20 Steve Hartwell + + * src/cache/ftcmru.c (FTC_MruList_RemoveSelection): Handle a NULL + value for `selection' as `select all'. + +2004-03-19 Steve Hartwell + + * src/sfnt/ttload.c (tt_face_load_sfnt_header): Reject face_index + values > 0 if loading non-TTC fonts. + + * src/base/ftmac.c (open_face_from_buffer): Set positive face_index + to zero before calling FT_Open_Face. + + * docs/CHANGES: Updated. + +2004-03-04 Werner Lemberg + + * Jamfile, vms_make.com, builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype/vcproj, include/freetype/ftmoderr.h: + Add LZW module. + + * Jamfile.in: Removed. + + * docs/CHANGES: Updated. + + * include/freetype/internal/ftobjs.h: s/MIN/FT_MIN/, s/MAX/FT_MAX/, + s/ABS/FT_ABS/. Updated all callers. + + * src/type1/t1load.c (parse_dict), src/pcf/pcfdrivr.c + (PCF_Face_Init): Use FT_ERROR_BASE. + +2004-03-04 Albert Chin + + Add support for PCF fonts compressed with LZW (extension .pcf.Z, + created with `compress'). + + * include/freetype/config/ftoption.h, devel/ftoption.h + (FT_CONFIG_OPTION_USE_LZW): New macro. + + * include/freetype/ftlzw.h: New file. + * include/freetype/config/ftheader.h (FT_LZW_H): New macro for + ftlzw.h. + + * src/lzw/*: New files. + + * src/pcf/pcfdrivr.c: Include FT_LZW_H. + (PCF_Face_Init): Try LZW also. + + * src/gzip/ftgzip.c: s/0/Gzip_Err_Ok/ where appropriate. + Beautify. + +2004-03-03 Werner Lemberg + + * src/pshinter/pshalgo.c (psh_hint_table_init): Simplify code. + +2004-03-02 Werner Lemberg + + Add embedded bitmap support to CFF driver. + + * src/cff/cffobjs.h (CFF_SizeRec): New structure. + + * src/cff/cffgload.c (cff_builder_init): Updated. + (cff_slot_load): Updated. + [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Load sbit. + + * src/cff/cffobjs.c (sbit_size_reset) + [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: New function. + (cff_size_get_globals_funcs, cff_size_done, cff_size_init): Updated. + (cff_size_reset): Updated. + [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Call sbit_size_reset. + + * src/cff/cffdrivr.c (Load_Glyph): Updated. + (cff_driver_class): Use CFF_SizeRec. + + * docs/CHANGES: Updated. + +2004-03-01 Werner Lemberg + + * src/pshinter/pshglob.c (psh_globals_scale_widths): Don't use + FT_RoundFix but FT_PIX_ROUND. + (psh_blues_snap_stem): Don't use blue_shift but blue_threshold. + + * src/pshinter/pshalgo.c (PSH_STRONG_THRESHOLD_MAXIMUM): New macro. + (psh_glyph_find_string_points): Use PSH_STRONG_THRESHOLD_MAXIMUM. + (psh_glyph_find_blue_points): New function. Needed for fonts like + p052003l.pfb (URW Palladio L Roman) which have flex curves at the + base line within blue zones, but the flex curves aren't covered by + hints. + (ps_hints_apply): Use psh_glyph_find_blue_points. + +2004-02-27 Garrick Meeker + + * builds/unix/configure.ac: Fix compiler flags for + `--with-old-mac-fonts'. + * builds/unix/configure: Regenerated. + + * src/base/ftmac.c: s/TARGET_API_MAC_CARBON/!TARGET_API_MAC_OS8/. + (FT_New_Face_From_Resource): New function. + (FT_New_Face): Use FT_New_Face_From_Resource. + (FT_New_Face_From_FSSpec): Use FT_New_Face_From_Resource. + [__MWERKS__]: Don't include FSp_fopen.h. + +2004-02-26 Werner Lemberg + + * src/pshinter/pshglob.c (psh_globals_new): Fix value of + `dim->stdw.count'. + Don't assign default values to blue scale and blue shift. + +2004-02-25 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-02-25 Garrick Meeker + Steve Hartwell + + Improve MacOS fond support. Provide a new API + `FT_New_Face_From_FSSpec' similar to `FT_New_Face'. + + * src/base/ftmac.c [__MWERKS__]: Include FSp_fpopen.h. + STREAM_FILE [__MWERKS__]: New macro. + (ft_FSp_stream_close, ft_FSp_stream_io) [__MWERKS__]: New functions. + (file_spec_from_path) [__MWERKS__]: Updated #if statement. + (get_file_type, make_lwfn_spec): Use `const' for argument. + (is_dfont) [TARGET_API_MAC_CARBON]: Removed. + (count_face_sfnt, count_faces): New functions. + (parse_fond): Do some range checking. + (read_lwfn): Change type of second argument. + No longer call FSpOpenResFile. + (OpenFileAsResource): New function. + (FT_New_Face_From_LWFN): Use `const' for second argument. + Use OpenFileAsResource. + (FT_New_Face_From_Suitcase): Change type of second argument. + No longer call FSpOpenResFile. + Loop over all resource indices. + (FT_New_Face_From_dfont) [TARGET_API_MAC_CARBON]: Removed. + (FT_GetFile_From_Mac_Name): Use `const' for first argument. + (ResourceForkSize): Removed. + (FT_New_Face): Updated to use new functions. + (FT_New_Face_From_FSSpec): New function. + + * include/freetype/ftmac.h: Updated. + +2004-02-24 Malcolm Taylor + + * src/autohint/ahhint.c (ah_hinter_load) : + Handle case where outline->num_vedges is zero while computing hinted + metrics. + +2004-02-24 Gordon Childs + + * src/cff/cffcmap.c (cff_cmap_unicode_init): Provide correct value + for `count'. + +2004-02-24 Werner Lemberg + + * include/freetype/t1tables.h (PS_PrivateRec): Add + `expansion_factor'. + + * src/pshinter/pshglob (psh_blues_scale_zones): Fix computation + of blues->no_overshoots -- `blues_scale' is stored with a + magnification of 1000, and `scale' returns fractional pixels. + + * src/type1/t1load.c (T1_Open_Face): Initialize `blue_shift', + `blue_fuzz', `expansion_factor', and `blue_scale' according to the + Type 1 specification. + + * src/type1/t1tokens.h: Handle `ExpansionFactor'. + + * docs/CHANGES: Updated. + +2004-02-24 Masatake YAMATO + + Provide generic access to MacOS resource forks. + + * src/base/ftrfork.c, include/freetype/internal/ftrfork.h: New + files. + + * src/base/ftobjs.c: Include FT_INTERNAL_RFORK_H. + (Mac_Read_POST_Resource, Mac_Read_sfnt_Resource): Remove arguments + `resource_listoffset' and `resource_data' and adapt code + accordingly. These values are calculated outside of the function + now. + Add new argument `offsets'. + (IsMacResource): Use `FT_Raccess_Get_HeaderInfo' and + `FT_Raccess_Get_DataOffsets'. + (load_face_in_embedded_rfork): New function. + (load_mac_face): Use load_face_in_embedded_rfork. + (ft_input_stream_new): Renamed to... + (FT_Stream_New): This. Use FT_BASE_DEF. Updated all callers. + (ft_input_stream_free): Renamed to... + (FT_Stream_Free): This. Use FT_BASE_DEF. Updated all callers. + + * src/base/ftbase.c: Include ftrfork.c. + + * src/base/rules.mk (BASE_SRC), src/base/Jamfile: Updated. + + * include/freetype/internal/internal.h (FT_INTERNAL_RFORK_H): + New macro. + + * include/freetype/internal/fttrace.h: Added `rfork' as a new + trace definition. + + * include/freetype/internal/ftstream.h: Declare FT_Stream_New and + FT_Stream_Free. + + * include/freetype/config/ftoption.h, devel/ftoption.h + (FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK): New option. + + * include/freetype/config/ftstdlib.h (ft_strrchr): New macro. + +2004-02-23 Werner Lemberg + + * docs/CHANGES: Updated. + + * include/freetype/internal/ftdebug.h: Include FT_FREETYPE_H. + +2004-02-23 Masatake YAMATO + + Provide a simple API to control FreeType's tracing levels. + + * include/freetype/internal/ftdebug.h (FT_Trace_Get_Count, + FT_Trace_Get_Name): New declarations. + + * src/base/ftdebug.c (FT_Trace_Get_Count, FT_Trace_Get_Name): New + functions. + +2004-02-23 David Turner + + * src/autofit/afhints.c, src/autofit/afhints.h, + src/autofit/aflatin.c, src/autofit/afloader.c, src/types.h: Grave + bugs have been fixed. The auto-fitter works, doesn't crash, but + still produces unexpected results... + +2004-02-21 Werner Lemberg + + * src/pshinter/pshalgo.c (PSH_STRONG_THRESHOLD): Changed to hold + the accepted shift for strong points in fractional pixels (which + is a heuristic value). + (psh_glyph_find_strong_points): Compute threshold for + psh_hint_table_find_strong_points. + (psh_hint_table_find_strong_point): Add parameter to pass threshold. + +2004-02-20 Werner Lemberg + + * src/pshinter/pshrec.c (ps_mask_table_set_bits): Don't call + ps_mask_table_alloc but ps_mask_table_last. + (ps_hints_t2mask): Use correct position and number for vertical + and horizontal hinter mask bits. + + * docs/CHANGES: Updated. + +2004-02-19 Werner Lemberg + + * src/base/ftstroke.c (FT_Glyph_StrokeBorder): Fix enum handling. + * src/cff/cffdrivr.c (cff_get_cmap_info): Remove compiler warning. + +2004-02-18 Werner Lemberg + + * include/freetype/freetype.h: Document FT_LOAD_TARGET_XXX properly. + + * src/base/ftglyph.c (ft_bitmap_glyph_class, + ft_outline_glyph_class): Tag with FT_CALLBACK_TABLE_DEF. + + * src/smooth/ftsmooth.c (ft_smooth_render): Handle + FT_RENDER_MODE_LIGHT. + +2004-02-17 Werner Lemberg + + Fix callback functions in cache module. + + * src/cache/ftccback.h: New file for callback declarations. + + * src/cache/ftcbasic.c (ftc_basic_family_compare, + ftc_basic_family_init, ftc_basic_family_get_count, + ftc_basic_family_load_bitmap, ftc_basic_family_load_glyph, + ftc_basic_gnode_compare_faceid): Use FT_CALLBACK_DEF. + (ftc_basic_image_family_class, ftc_basic_image_cache_class, + ftc_basic_sbit_family_class, ftc_basic_sbit_cache_class): + Use FT_CALLBACK_TABLE_DEF and local wrapper functions. + + * src/cache/ftccache.c: Include ftccback.h. + (ftc_cache_init, ftc_cache_done): New wrapper functions which use + FT_LOCAL_DEF. + + * src/cache/ftccmap.c: Include ftccback.h. + (ftc_cmap_cache_class): Use local wrapper functions. + + * src/cache/ftcglyph.c: Include ftccback.h. + (ftc_gnode_compare, ftc_gcache_init, ftc_gcache_done): New wrapper + functions which use FT_LOCAL_DEF. + + * src/cache/ftcimage.c: Include ftccback.h. + (ftc_inode_free, ftc_inode_new, ftc_inode_weight): New wrapper + functions which use FT_LOCAL_DEF. + + * src/cache/ftcmanag.c (ftc_size_list_class, ftc_face_list_class): + Use FT_CALLBACK_TABLE_DEF. + + * src/cache;/ftcsbits.c: Include ftccback.h. + (ftc_snode_free, ftc_snode_new, ftc_snode_weight, + ftc_snode_compare): New wrapper functions which use FT_LOCAL_DEF. + + * src/cache/rules.mk (CACHE_DRV_H): Add ftccback.h. + +2004-02-17 Masatake YAMATO + + * include/freetype/ftmac.h (FT_GetFile_From_Mac_Name): Fix a typo + (FT_EXPORT_DEF -> FT_EXPORT). + + * include/freetype/ftxf86.h (FT_Get_X11_Font_Format): Ditto. + +2004-02-15 Werner Lemberg + + * src/base/ftobjs.c (FT_Set_Char_Size): Fix typo. + +2004-02-14 Masatake YAMATO + + * builds/unix/ftsystem.c: Include errno.h. + (ft_close_stream): Renamed to... + (ft_close_stream_by_munmap): This. + (ft_close_stream_by_free): New function. + (FT_Stream_Open): Use fallback method if mmap fails. + Use proper function for closing the stream. + +2004-02-14 Werner Lemberg + + * src/type1/t1load.c (parse_dict): Initialize `start_binary'. + +2004-02-13 Robert Etheridge + + * src/type42/t42objs.c (T42_Face_Init), src/type1/t1objs.c + (T1_Face_Init), src/cid/cidobjs.c (cid_face_init): Fix computation + of underline_position and underline_thickness. + +2004-02-12 Werner Lemberg + + * src/base/ftobjs.c (FT_Set_Char_Size): Return immediately if + ppem values don't change. Suggested by Graham Asher. + +2004-02-11 Werner Lemberg + + * src/cid/cidload.c (cid_face_open): Always allocate + face->cid_stream so that we can deallocate it safely. + +2004-02-10 Werner Lemberg + + Make the PS parser more tolerant w.r.t. non-standard font data. In + general, an error is only reported in case of a syntax error; a + wrong type is now simply ignored (if possible). To be independent + of the order of various MM-specific keywords, the parse_shared_dict + routine has been removed -- the PS parser is now capable to skip + this data. It no longer fails on parsing e.g. + + dup /WeightVector exch def + + Since the token following /WeightVector isn't `[' (starting an + array) it is simply ignored. + + * include/freetype/fterrdef.h: Define `FT_Err_Ignore' (0xA2) as a + new internal error value. + + * src/type1/t1load.c (parse_blend_axis_types, + parse_blend_design_positions, parse_blend_design_map): Return + T1_Err_Ignore if no proper array is following the keyword. + (parse_weight_vector): Use T1_ToTokenArray, initializing `blend' + structure, if necessary. + Return T1_Err_Ignore if no proper array is following the keyword. + (parse_shared_dict): Removed. + (parse_encoding): Set parser->root.error to return T1_Err_Ignore + if no result can be obtained. + Check for errors before accessing `elements' array. + (t1_keywords): Remove /shareddict. + (parse_dict): Reset error if t1_load_keyword returns T1_Err_Ignore. + Set keyword_flag only in case of success. + Check error code if skipping an unrecognized token. + (T1_Open_Face) [!T1_CONFIG_OPTION_NO_MM_SUPPORT]: Call T1_Done_Blend + if blend commands haven't set up a proper MM font. + + * src/psaux/psobjs.c (ps_parser_load_field_table): Remove special + code for synthetic fonts. + Return PSaux_Err_Ignore if no proper value has been found. + +2004-02-09 Werner Lemberg + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + : Preserve glyph width before calling + cff_operator_seac. + +2004-02-09 Martin Muskens + + * src/cff/cffgload.c (cff_decoder_parse_charstrings): Handle special + first argument for `hintmask' and `cntrmask' operators also. + +2004-02-08 Werner Lemberg + + * builds/unix/configure.in: Call AC_SUBST for `enable_shared', + `hardcode_libdir_flag_spec', and `wl'. + * builds/unix/configure: Regenerated. + + * builds/unix/freetype-config.in: Make --prefix and --exec-prefix + actually work. + Report a proper --rpath (or -R) value for --libs argument if a + shared library has been built. + + * docs/CHANGES: Updated. + +2004-02-07 Keith Packard + + * src/bdf/bdfdrivr.c (BDF_Face_Init, BDF_Set_Pixel_Size): Fix + computation of various vertical and horizontal metric values. + + * src/pcfdrivr.c (PCF_Set_Pixel_Size), src/pcfread (pcf_load_font): + Ditto. + +2004-02-07 Werner Lemberg + + * builds/win32/visualc/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.dsw, docs/CHANGES: Updated. + +2004-02-07 Vitaliy Pasternak + + * builds/win32/visualc/freetype.sln, + builds/win32/visualc/freetype.vcproj: New files for VS.NET 2003. + +2004-02-03 Werner Lemberg + + * include/freetype/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): + Initialize `node'. + * src/type1/t1load.c (parse_dict): Initialize `have_integer'. + +2004-02-02 Werner Lemberg + + * src/type1/t1load.c (parse_dict): Handle `RD' and `-|' commands + outside of /Subrs or /CharStrings. This can happen if there is + additional code manipulating those two arrays so that FreeType + doesn't recognize them properly. + (T1_Open_Face): Improve an error message. + +2004-02-01 Werner Lemberg + + * src/type1/t1load.c (parse_charstrings): Exit immediately if + there are no elements in /CharStrings. This is needed for fonts + like Optima-Oblique which not only define /CharStrings but access it + also. + +2004-02-01 David Turner + + * src/sfnt/Jamfile: Removing `ttcmap' from the list of sources. + + * include/freetype/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP) + : Provide macro version which doesn't use inline code. + * include/freetype/cache/ftcglyph.h (FTC_GCACHE_LOOKUP_CMP) + : Ditto. + Use FTC_MRULIST_LOOKUP_CMP. + * include/freetype/cache/ftcmru.h (FTC_MRULIST_LOOKUP_CMP): New + macro. + (FTC_MRULIST_LOOKUP): Use it. + + * src/cache/Jamfile (_sources), src/cache/descrip.mms: Updated. + * src/cache/ftcbasic.c: Fix compiler warnings. + * src/cache/ftcmanag.c (FTC_Manager_LookupSize, + FTC_Manager_LookupFace) : Use FTC_MRULIST_LOOKUP_CMP. + * src/cache/ftcmru.c (FTC_MruList_Find): Fix a bug (found after + heavy testing). + + * Jamfile: Updating `refdoc' target, and adding `autohint' to the + list of modules to build. Both the autohinter and autofitter will + be built by default. But which one will be used is determined by + the content of `ftmodule.h'. + + * src/autofit/*: Many updates, but the code is still buggy... + +2004-01-31 Werner Lemberg + + * src/cff/cffgload.c (cff_operator_seac): Fix magnitude of + accent offset. + Update code similarly to the seac support for Type 1 fonts. + (cff_decoder_parse_charstrings) : Fix magnitude + of accent offset. + Don't hint glyphs twice if seac is emulated. + : Assign correct point tags. + * docs/CHANGES: Updated. + +2004-01-30 Werner Lemberg + + * src/type1/t1parse.c (T1_Get_Private_Dict): Use FT_MEM_MOVE, not + FT_MEM_COPY, for copying the private dict. + + * src/type1/t1load.c (parse_subrs): Assign number of subrs only + in first run. + (parse_charstrings): Parse /CharStrings in second run without + assigning values. + (parse_dict): Skip all /CharStrings arrays but the first. We need + this for non-standard fonts like `Optima' which have different + outlines depending on the resolution. Note that there is no + guarantee that we get fitting /Subrs and /CharStrings arrays; this + can only be done by a real PS interpreter. + +2004-01-29 Antoine Leca + + * builds/win32/visualc/index.html: New file, giving detailed + explanations about forcing CR+LF line endings for the VC++ project + files. + +2004-01-22 Garrick Meeker + + * src/cff/cffload.c (cff_subfont_load): Initialize `dict'. + +2004-01-22 Werner Lemberg + + Add support for the hexadecimal representation of binary data + started with `StartData' in CID-keyed Type 1 fonts. + + * include/freetype/internal/t1types.h (CID_FaceRec): Add new + members `binary_data' and `cid_stream'. + + * src/cid/cidload.c (cid_read_subrs): Use `face->cid_stream'. + (cid_hex_to_binary): New auxiliary function. + (cid_face_open): Add new argument `face_index' to return quickly + if less than zero. Updated all callers. + Call `cid_hex_to_binary', then open and assign memory stream to + `face->cid_stream' if `parser->binary_length' is non-zero. + * src/cid/cidload.h: Updated. + + * src/cid/cidobjs.c (cid_face_done): Free `binary_data' and + `cid_stream'. + + * src/cid/cidparse.c (cid_parser_new): Check arguments to + `StartData' and set parser->binary_length accordingly. + * src/cid/cidparse.h (CID_Parser): New member `binary_length'. + + * src/cid/cidgload.c (cid_load_glyph): Use `face->cid_stream'. + + * docs/CHANGES: Updated. + +2004-01-21 Werner Lemberg + + include/freetype/config/ftstdlib.h (ft_atoi): Replaced with... + (ft_atol): This. + * src/base/ftdbgmem.c: s/atol/ft_atol/. + * src/type42/t42drivr.c: s/ft_atoi/ft_atol/. + +2004-01-20 Masatake YAMATO + + * include/freetype/ftcache.h: Delete duplicated definition of + FTC_FaceID. + + * src/cff/cffdrivr.c (cff_get_cmap_info): Call sfnt module's TT CMap + Info service function if the cmap comes from sfnt. Return 0 if the + cmap is sythesized in cff module. + +2004-01-20 David Turner + + * src/cache/ftcmanag.c (ftc_size_node_compare): Call + FT_Activate_Size. + +2004-01-20 Werner Lemberg + + * src/type1/t1parse.c (T1_Get_Private_Dict): Skip exactly one + CR, LF, or CR/LF after `eexec'. + +2004-01-18 David Turner + + * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Remove compiler + warning. + + * src/tools/docmaker/*: Updating beautifier tool. + +2004-01-15 David Turner + + * src/base/ftoutln.c (ft_orientation_extremum_compute): Fix + infinite loop bug. + + * include/freetype/ftstroke.h: Include FT_GLYPH_H. + (FT_Stroker_Rewind, FT_Glyph_Stroke, FT_Glyph_StrokeBorder): New + declarations. + + * src/base/ftstroke.c: Include FT_INTERNAL_OBJECTS_H. + (FT_Outline_GetOutsideBorder): Inverse result. + (FT_Stroker_Rewind, FT_Glyph_Stroke, FT_GlyphStrokeBorder): New + functions. + (FT_Stroker_EndSubPath): Close path if needed. + (FT_Stroker_Set, FT_Stroker_ParseOutline): Use FT_Stroker_Rewind. + + * include/freetype/cache/ftcmanag.h (FTC_ScalerRec, + FTC_Manager_LookupSize): Moved to... + * include/freetype/ftcache.h (FTC_ScalerRec, + FTC_Manager_LookupSize): Here. + + * src/tools/docmaker/docbeauty.py: New file to beautify the + documentation comments (e.g., to convert them to single block border + mode). + * src/tools/docmaker/docmaker.py (file_exists, make_file_list): + Moved to... + * src/tools/docmaker/utils.py (file_exists, make_file_list): Here. + +2004-01-14 David Turner + + * include/freetype/internal/ftmemory.h (FT_ARRAY_COPY, + FT_ARRAY_MOVE): New macros to make copying arrays easier. + Updated all relevant code to use them. + +2004-01-14 Werner Lemberg + + * src/cff/cffload.c (cff_font_load): Load charstrings_index earlier. + Use number of charstrings as argument to CFF_Load_FD_Select (as + documented in the CFF specs). + +2004-01-13 Graham Asher + + * src/pshinter/pshalgo.c (psh_glyph_init): Move assignment of + `glyph->memory' up to free arrays properly in case of failure. + +2004-01-10 Masatake YAMATO + + Make `FT_Get_CMap_Language_ID' work with CFF. Bug reported by + Steve Hartwell . + + * src/cff/cffdrivr.c: Include FT_SERVICE_TT_CMAP_H. + (cff_services): Added an entry for FT_SERVICE_ID_TT_CMAP. + (cff_get_cmap_info): New function. + (cff_service_get_cmap_info) New entry for cff_services. + + * src/sfnt/ttcmap0.c: Exit loop after a format match has been found. + Suggested by Steve Hartwell . + +2004-01-03 Masatake YAMATO + + * src/base/ftobjs.c (destroy_charmaps): New function. + (destroy_face, open_face): Use `destroy_charmaps'. + +2004-01-01 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-01-01 Michael Jansson + + * src/winfonts/winfnt.c (FNT_Size_Set_Pixels): Fix sign of + size->metrics.descender. + +2003-12-31 Wolfgang Domröse + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + [FT_DEBUG_LEVEL_TRACE]: Use `%ld' in FT_TRACE4. + : Change type of dx and dy to FT_Pos and remove + cast for accessing arguments. + +2003-12-31 Werner Lemberg + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Revert previous + change. It's not necessary. + +2003-12-29 Smith Charles + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Handle `repeated + flags set' correctly. + +2003-12-29 Werner Lemberg + + * src/cff/cffobjs.c (cff_face_init): Fix memory leak by deallocating + `full' and `weight' properly. + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + [FT_DEBUG_LEVEL_TRACE]: Use `0x' as prefix for + tracing output. + +2003-12-26 Werner Lemberg + + * include/freetype/internal/sfnt.h (TT_Set_SBit_Strike_Func): + Use FT_UInt for ppem values. + * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Use FT_UInt for + ppem values. + * src/sfnt/ttsbit.h: Updated. + + * src/base/ftobjs.c (FT_Set_Pixel_Sizes): Don't allow ppem values + larger than -0FFFF. + +2003-12-25 Werner Lemberg + + * src/base/fttrigon.c, src/base/ftgloadr.c: Inlude + FT_INTERNAL_OBJECTS_H. + + * src/base/ftstroke.c (FT_Outline_GetInsideBorder, + FT_Outline_GetOutsideBorder): s/or/o/ to make it compile with + C++ compilers. + + * src/cache/ftcmru.c, include/freetype/cache/ftcmru.h: + s/select/selection/ to avoid compiler warning. + * src/cff/cffload.h: s/select/ftselect/ to avoid potential + compiler warning. + +2003-12-24 Werner Lemberg + + * src/cache/ftcsbits.c (FTC_SNode_Weight): + s/FTC_SBIT_ITEM_PER_NODE/FTC_SBIT_ITEMS_PER_NODE/. + +2003-12-24 David Turner + + * Fixed compilation problems in the cache sub-system. + + * Partial updates to src/autofit. + + * Jamfile (FT2_COMPONENTS): Add autofit module. + +2003-12-23 Werner Lemberg + + * src/cff/cffgload.c (cff_lookup_glyph_by_stdcharcode): Handle + CID-keyed fonts. + +2003-12-23 David Turner + + * include/freetype/internal/ftobjs.h (FT_PAD_FLOOR, FT_PAD_ROUND, + FT_PAD_CEIL, FT_PIX_FLOOR, FT_PIX_ROUND, FT_CEIL): New macros. They + are used to avoid compiler warnings with very pedantic compilers. + Note that `(x) & -64' causes a warning if (x) is not signed. Use + `(x) & ~63' instead! + Updated all related code. + + Add support for extraction of `inside' and `outside' borders. + + * src/base/ftstroke.c (FT_StrokerBorder): New enumeration. + (FT_Outline_GetInsideBorder, FT_Outline_GetOutsideBorder, + FT_Stroker_GetBorderCounts, FT_Stroker_ExportBorder): New functions. + (FT_StrokeBorderRec): New boolean member `valid'. + (ft_stroke_border_get_counts): Updated. + * include/freetype/ftstroke.h: Updated. + +2003-12-22 Werner Lemberg + + * include/freetype/ftwinfnt.h (FT_WinFNT_ID_*): New definitions + to describe the `charset' field in FT_WinFNT_HeaderRec. + * src/winfonts/winfnt.c (FNT_Face_Init): Set encoding to + FT_ENCODING_NONE except for FT_WinFNT_ID_MAC. + + * include/freetype/freetype.h (FT_Encoding): Improve comment, + based on work by Detlef Würkner . + + * docs/CHANGES: Updated. + +2003-12-22 David Turner + + * include/freetype/ftcache.h, + include/freetype/cache/ftcmanag.h, + include/freetype/cache/ftccache.h, + include/freetype/cache/ftcmanag.h, + include/freetype/cache/ftcmru.h (added), + include/freetype/cache/ftlru.h (removed), + include/freetype/cache/ftcsbits.h, + include/freetype/cache/ftcimage.h, + include/freetype/cache/ftcglyph.h, + src/cache/ftcmru.c, + src/cache/ftcmanag.c, + src/cache/ftccache.c, + src/cache/ftcglyph.c, + src/cache/ftcimage.c, + src/cache/ftcsbits.c, + src/cache/ftccmap.c, + src/cache/ftcbasic.c (added), + src/cache/ftclru.c (removed): + + *Complete* rewrite of the cache sub-system to `solve' the + following points: + + - all public APIs have been moved to FT_CACHE_H, everything + under `include/freetype/cache' is only needed by client + applications that want to implement their own caches + + - a new function named FTC_Manager_RemoveFaceID to deal + with the uninstallation of FaceIDs + + - the image and sbit cache are now abstract classes, that + can be extended much more easily by client applications + + - better performance in certain areas. Further optimizations + to come shortly anyway... + + - the FTC_CMapCache_Lookup function has changed its signature, + charmaps can now only be retrieved by index + + - FTC_Manager_Lookup_Face => FTC_Manager_LookupFace + FTC_Manager_Lookup_Size => FTC_Manager_LookupSize (still in + private header for the moment) + +2003-12-21 Werner Lemberg + + * src/type1/t1load.c (parse_dict): Stop parsing if `eexec' keyword + is encountered. + +2003-12-19 Werner Lemberg + + * src/cff/cfftypes.h (CFF_MAX_CID_FONTS): Increase to 32. For + example, the Japanese Hiragino font already contains 15 subfonts. + + * src/cff/cffload.c (cff_font_load): Deallocate `sids' array for + CID-keyed fonts. + + * devel/ftoption.h: Define FT_DEBUG_MEMORY. + +2003-12-18 Werner Lemberg + + * include/freetype/ttnameid.h (TT_ADOBE_ID_LATIN_1): New macro. + * src/type1/t1objs.c (T1_Face_Init): Use TT_ADOBE_ID* values. + +2003-12-18 Werner Lemberg + + * src/cff/cfftypes.h (CFF_FontRecDictRec): Change type of + `cid_count' to `FT_ULong'. + + * src/cff/cffgload.c (cff_slot_load): Take care of empty `cids' + array. + + * src/cff/cffload.c (cff_charset_done): Free `cids' array. + (cff_font_load): Create cids array only for CID-keyed fonts which + are subsetted. + + * src/cff/cffobjs.c (cff_face_init): Check the availability of + the PSNames modules for non-pure CFFs also. + Set FT_FACE_FLAG_GLYPH_NAMES for a non-pure CFF also if it isn't + CID-keyed. + + * src/cff/rules.mk (CFF_DRV_H): Add cfftypes.h. + +2003-12-17 Werner Lemberg + + * src/sfnt/sfobjs.c (sfnt_init_face): Don't set + FT_FACE_FLAG_GLYPH_NAMES if the font contains a version 3.0 `post' + table. + + * docs/CHANGES: Updated. + +2003-12-17 Masatake YAMATO + + Add new function FT_Get_CMap_Language_ID to extract the language ID + for TrueType/sfnt fonts. + + * include/freetype/internal/services/svttcmap.h: New file. + * include/freetype/internal/ftserv.h (FT_SERVICE_TT_CMAP_H): Add + svttcmap.h. + + * src/sfnt/sfdriver.c: Include ttcmap0.h. + (tt_service_get_cmap_info): New service. + (sfnt_services): Updated. + + * src/sfnt/ttcmap0.c (tt_cmap*_get_info): New functions. + (tt_cmap*_class_rec): Add tt_cmap*_get_info members. + (tt_get_cmap_info): New function. + * src/sfnt/ttcmap0.h: Include FT_SERVICE_TT_CMAP_H. + (TT_CMap_ClassRec): New field `get_cmap_info'. + (tt_get_cmap_info): New declaration. + + * src/base/ftobjs.c: Include FT_SERVICE_TT_CMAP_H. + (FT_Get_CMap_Language_ID): New function implementation. + * include/freetype/tttables.h (FT_Get_CMap_Language_ID): New + function declaration. + +2003-12-16 Werner Lemberg + + * src/sfnt/ttcmap.c, src/sfnt/ttcmap.h: Removed. Obsolete. + + * include/freetype/internal/sfnt.h (SFNT_Interface): Remove + obsolete fields `load_charmap' and `free_charmap'. + (TT_CharMap_Load_Func, TT_CharMap_Free_Func): Removed. + * src/sfnt/sfnt.c: Don't include ttcmap.c. + * src/sfnt/rules.mk (SFNT_DRV_SRC): Don't include ttcmap.c. + * src/sfnt/ttload.c: Don't include ttcmap.h. + * src/sfnt/sfdriver.c: Don't include ttcmap.h. + (sfnt_interface): Updated. + + * include/freetype/internal/tttypes.h (TT_TableDirRec, + TT_CMapDirRec, TT_CMapDirEntryRec, TT_CMap0, TT_CMap2SubHeaderRec, + TT_CMap2Rec, TT_CMap4Segment, TT_CMap4Rec, TT_CMap6, + TT_CMapGroupRec, TT_CMap8_12Rec, TT_CMap10Rec, TT_CharMap_Func, + TT_CharNext_Func, TT_CMapTableRec, TT_CharMapRec): Removed. + Obsolete. + * src/cff/cffobjs.h (CFF_CharMapRec): Removed. Obsolete. + +2003-12-15 Werner Lemberg + + * docs/CHANGES: Updated. + +2003-12-15 Wolfgang Domröse + + * builds/atari/*: New directory for building FreeType 2 on Atari + with the PureC compiler. + +2003-12-12 Wolfgang Domröse + + * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Add + cast. + * src/cff/cffdrivr.c (cff_ps_has_glyph_names): Assure that return + value is either 0 or 1. + +2003-12-12 Werner Lemberg + + * src/cff/cffdrivr.c (cff_get_glyph_name): Improve error message. + (cff_get_name_index): Return if no PSNames service is available. + (cff_ps_has_glyph_names): Handle CID-keyed fonts correctly. + * src/cff/cfftypes.h (CFF_CharsetRec): New field `cids', used for + CID-keyed fonts. This is the inverse mapping of `sids'. + * src/cff/cffload.c (cff_charset_load): New argument `invert'. + Initialize charset->cids if `invert' is set. + (cff_font_load): In call to cff_charset_load, set `invert' to true + for CID-keyed fonts. + * src/cff/cffgload.c (cff_slot_load): Handle glyph index as CID + and map it to the real glyph index. + + * docs/CHANGES: Updated. + +2003-12-11 Werner Lemberg + + * src/cff/cffobjs.c (cff_face_init): Don't set + FT_FACE_FLAG_GLYPH_NAMES for CID-keyed fonts. + Don't construct a cmap for CID-keyed fonts. + +2003-12-10 Werner Lemberg + + Use implementation specific SID value 0xFFFF to indicate that + a dictionary element is missing. + + * src/cff/cffload.c (cff_subfont_load): Initialize all fields + which hold SIDs to 0xFFFF. + (cff_index_get_sid_string): Handle SID value 0xFFFF. + Handle case where `psnames' is zero. + (cff_font_load): Updated. + Don't load encoding for CID-keyed CFFs. + + * src/cff/cffobjs.c (cff_face_init): Updated. + Don't check for PSNames module if font is CID-keyed. + Compute style name properly (using the same algorithm as in the + CID driver). + Fix computation of style flags. + + * src/cff/cfftoken.h: Comment out handling of base_font_name. + Rename `postscript' field to `embedded_postscript' + * src/cff/cfftypes.h (CFF_FontRecDictRec): Remove `base_font_name' + and `postscript'. + +2003-12-10 Detlef Würkner + + * src/pcf/pcfdrivr.c (pcf_get_charset_id): New function (a clone + of the similar BDF function). + (pcf_service_bdf): Use it. + +2003-12-09 Werner Lemberg + + * src/sfnt/sfobjs.c (sfnt_load_face): Set FT_FACE_FLAG_GLYPH_NAMES + only if a `post' table is present. + +2003-12-09 George Williams + + * src/base/ftobjs.c (load_mac_face): Recent versions of Linux + support Mac's HFS+ file system, thus enable code to read /rsrc on + non-Macintosh platforms also. + +2003-12-08 Werner Lemberg + + * include/freetype/internal/psaux.h (PS_TableRec): Change type + of `lengths' to FT_PtrDist. + (T1_DecoderRec): Change type of `subrs_len' to FT_PtrDist. + * include/freetype/internal/t1types.h (T1_FontRec): Change type + of `subrs_len' and `charstrings_len' to FT_PtrDist. + + * src/base/ftobjs.c (Mac_Read_POST_Resource): Replace `junk' + variable with better solution. + (IsMacResource): Remove unused variable `map_len'. + Replace `junk' variable with better solution. + (FT_Open_Face) [!FT_MACINTOSH]: Add conditional + FT_CONFIG_OPTION_MAC_FONTS. + +2003-12-08 Wolfgang Domröse + + * src/autohint/ahhint.c (ah_hinter_hint_edges, + ah_hinter_align_strong_points): Add some casts. + + * src/base/ftoutln.c (FT_OrientationExtremumRec): Change type + of `pos' to FT_Long. + + * src/base/ftobjs.c (Mac_Read_POST_Resource, + Mac_Read_sfnt_Resource): Change type of `len' to FT_Long. + + * src/type42/t42parse.c (t42_parse_dict): Add cast for `n_keywords'. + +2003-12-07 Werner Lemberg + + * docs/raster.txt: New file, taken from FreeType 1 and completely + revised. + +2003-12-04 Masatake YAMATO + + * src/type1/t1driver.c (Get_Interface): Remove FT_UNUSED for + t1_interface. t1_interface is used. + +2003-11-27 David Turner + + * src/pfr/pfrdrivr.c (pfr_get_metrics): Revert incorrect change of + 2003-11-23: For PFR fonts, metrics->x_scale and metrics->y_scale are + the scaling values for outline units, not for metric units. + +2003-11-25 Werner Lemberg + + * src/base/ftcalc.c, include/freetype/internal/ftcalc.h + (FT_MulDiv_No_Round): Surround code with `#ifdef + TT_CONFIG_OPTION_BYTECODE_INTERPRETER ... #endif'. + +2003-11-23 Werner Lemberg + + * src/base/ftcalc.c (FT_MulDiv_No_Round): New function (32 and + 64 bit version). + * include/freetype/internal/ftcalc.h: Updated. + + * src/truetype/ttinterp.c (TT_MULDIV_NO_ROUND): New macro. + (TT_INT64): Removed. + (DO_DIV): Use TT_MULDIV_NO_ROUND. + + * src/pfr/pfrdrivr.c (pfr_get_metrics): Directly use + metrics->x_scale and metrics->y_scale. + +2003-11-22 Rogier van Dalen + + * src/truetype/ttinterp.c (CUR_Func_move_orig): New macro. + (Direct_Move_Orig, Direct_Move_Orig_X, Direct_Move_Orig_Y): New + functions. Similar to Direct_Move, Direct_Move_X, and + Direct_Move_Y but without touching. + (Compute_Funcs): Use new functions. + + (Round_None, Round_To_Grid, Round_To_Half_Grid, Round_Down_To_Grid, + Round_Up_To_Grid, Round_To_Double_Grid, Round_Super, + Round_Super_45): Fix rounding of value zero. + + (DO_DIV): Don't use TT_MULDIV. + + (Ins_SHC): This instruction actually touches the points. + (Ins_MSIRP): Fix undocumented behaviour. + + * src/truetype/ttinterp.h (TT_ExecContextRec): Updated. + +2003-11-22 Werner Lemberg + + * docs/VERSION.DLL, docs/CHANGES: Updated. + + * src/base/ftobjs.c (FT_Set_Char_Size): Make metrics->x_scale and + metrics->y_scale really precise. + + (FT_Load_Glyph): Update computation of linearHoriAdvance and + linearVertAdvance. + + * src/truetype/ttinterp.c (Update_Max): Use FT_REALLOC. + +2003-11-22 David Turner + + * src/autofit/*: More updates. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 8. + * builds/unix/configure.ac (version_info): Set to 9:6:3. + * README: Updated. + +2003-11-13 John A. Boyd Jr. + + * src/bdf/bdfdrivr.c (bdf_interpret_style), src/pcf/pcfread.c + (pcf_interpret_style): Replace spaces with dashes in properties + SETWIDTH_NAME and ADD_STYLE_NAME to simplify parsing. + +2003-11-11 Werner Lemberg + + * docs/CHANGES: Updated. + +2003-11-11 John A. Boyd Jr. + + Handle SETWIDTH_NAME and ADD_STYLE_NAME properties for BDF and PCF + fonts. + + * src/bdf/bdfdrivr.c (bdf_interpret_style): New auxiliary function. + (BDF_Face_Init): Don't handle style properties but call + bdf_interpret_style. + + * src/pcf/pcfread.c (pcf_interpret_style): New auxiliary function. + (pcf_load_font): Don't handle style properties but call + pcf_interpret_style. + +2003-11-07 Werner Lemberg + + + * Version 2.1.7 released. + ========================= + + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 7. + + * builds/unix/ft2unix.h: Fix comments. + + * builds/unix/ftconfig.in: Synchronized with ANSI version. + Use `#undef' in templates as recommended in the autoconf + documentation. + Since real `#undef' lines don't survive during configuration, use + `/undef' instead; the postprocessing facility of the + AC_CONFIG_HEADERS autoconf macro converts them to `#undef'. + + * builds/unix/install.mk (install): Install Unix version of + `ftconfig.h'. + + * builds/unix/unix-cc.in (CFLAGS): Set FT_CONFIG_CONFIG_H macro + to include the correct `ftconfig.h' file. + + * builds/unix/ft-munmap.m4 (FT_MUNMAP_DECL): Removed. + (FT_MUNMAP_PARAM): Updated syntax to autoconf 2.59. + + * builds/unix/freetype2.m4: Updated syntax to autoconf 2.59. + + * builds/unix/configure.ac: Use AC_CONFIG_HEADERS instead of + AC_CONFIG_HEADER to create ftconfig.h, and use second argument + to replace `/undef' with `#undef'. + Don't use FT_MUNMAP_DECL but AC_CHECK_DECLS to check for munmap. + Use AS_HELP_STRING in AC_ARG_WITH. + Update syntax to autoconf 2.59. + + * builds/unix/ltmain.sh: Regenerated with `libtoolize --force + --copy' from libtool 1.5. + * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from + automake 1.7.8. + * builds/unix/configure: Regenerated with autoconf 2.59. + * builds/unix/config.guess, builds/unix/config.sub: Updated from + `config' CVS module at subversions.gnu.org + * builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from + `texinfo' CVS module at subversions.gnu.org. + + * builds/vms/ftconfig.h: Synchronized with ANSI version. + + * docs/CUSTOMIZE: Fix documentation error. + * docs/CHANGES, docs/VERSION.DLL, docs/release: Updated. + + * builds/freetype.mk (refdoc): Updated --title. + +2003-11-07 David Turner + + + * Version 2.1.6 released. + ========================= + + + * install: Removed. Obsolete. + +2003-11-04 Werner Lemberg + + * src/sfnt/sfdriver.c: Include FT_SERVICE_SFNT_H. + (sfnt_service_sfnt_table): New service. + (sfnt_services): Updated. + + * docs/license.txt: Reworded. + +2003-11-03 Werner Lemberg + + * include/freetype/*: Add a guard to all public header files which + load FT_FREETYPE_H to reject freetype.h from FreeType 1. + +2003-11-02 Patrick Welche + + * builds/unix/freetype2.m4, builds/unix/ft-munmap.m4: Protect + first argument of AC_DEFUN with brackets to avoid possible + expansion. + +2003-11-02 Werner Lemberg + + * include/freetype/cache/ftcglyph.h: Don't include stddef.h. + + * include/freetype/freetype.h: Fix check for ft2build.h. + +2003-11-01 Werner Lemberg + + * include/freetype/freetype.h: Check that ft2build.h has been + loaded first. + + * src/base/fttype1.c (FT_Get_PS_Font_Info): Fix incorrectly applied + patch. + +2003-10-31 Detlef Würkner + + * src/base/fttype1.c (FT_Get_PS_Font_Info, FT_Has_PS_Glyph_Names): + Fix parameter order in calls to FT_FACE_FIND_SERVICE. + +2003-10-31 Werner Lemberg + + * include/freetype/internal/ftserv.h + (FT_SERVICE_POSTSCRIPT_NAMES_H): Removed. Unused. + + * src/type42/t42drivr.c (t42_services): Updated. + +2003-10-29 David Turner + + * include/freetype/internal/bdftypes.h: Removed. Obsolete. + * src/base/ftbdf.c: Updated. + + * include/freetype/internal/cfftypes.h: Moved to... + * src/cff/cfftypes.h: This place since no other module needs to + know about those types. + + * include/freetype/internal/t42types.h: Moved to... + * src/type42/t42types.h: This place since no other module needs to + know about those types. + + * include/freetype/internal/services/svbdf.h: Include FT_BDF_H. + + * include/freetype/internal/services/svpsname.h: Renamed to... + * include/freetype/internal/services/svpscmap.h: This. + Updated `FT_Service_PsNames' -> `FT_Service_PsCMaps' and + `POSTSCRIPT_NAMES' -> `POSTSCRIPT_CMAPS' everywhere. + + * include/freetype/internal/services/svpsinfo.h: New file, providing + PostScript info service. + + * include/freetype/internal/ftserv.h (FT_SERVICE_POSTSCRIPT_CMAPS_H, + FT_SERVICE_POSTSCRIPT_INFO_H): New macros for svpscmap.h and + svpsinfo.h. + * include/freetype/internal/internal.h (FT_INTERNAL_TYPE42_TYPES_H, + FT_INTERNAL_CFF_TYPES_H, FT_INTERNAL_BDF_TYPES_H): Removed. + + * src/base/fttype1.c: Don't include FT_INTERNAL_TYPE1_TYPES_H and + FT_INTERNAL_TYPE42_TYPES_H but FT_INTERNAL_SERVICE_H and + FT_SERVICE_POSTSCRIPT_INFO_H. + (FT_Get_PS_Font_Info, FT_Has_PS_Glyph_Names): Use new + POSTSCRIPT_INFO service. + + * src/cff/cffdrivr.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. + (cff_ps_has_glyph_names): New function. + (cff_service_ps_info): New service. + (cff_services): Updated. + + * src/cff/cffload.h, src/cff/cffobjs.h, src/cff/cffparse.h: Don't + include FT_INTERNAL_CFF_TYPES_H but cfftypes.h directly. + + * src/cif/cidriver.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. + (cid_ps_get_font_info): New function. + (cid_service_ps_info): New service. + (cid_services): Updated. + + * src/type1/t1driver.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. + (t1_ps_get_font_info, t1_ps_has_glyph_names): New functions. + (t1_service_ps_info): New service. + (t1_services): Updated. + + * src/type42/t42drivr.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. + (t42_ps_get_font_info, t42_ps_has_glyph_names): New functions. + (t42_service_ps_info): New service. + + * src/type42/t42objs.h: Don't include FT_INTERNAL_TYPE42_TYPES_H + but t42types.h directly. + + * src/psnames/psmodule.c (psnames_interface, psnames_services): + Renamed to... + (pscmaps_interface, pscmaps_services): This. + Updated all users. + + + * src/gzip/infblock.c (inflate_blocks): Remove compiler warning. + +2003-10-22 Werner Lemberg + + * src/type1/t1load.c (parse_encoding): Handle `/Encoding [ ... ]'. + + * src/type1/t1parse.c (T1_Get_Private_Dict): Test whether `eexec' + is real. + + * src/type42/t42parse.c (t42_parse_encoding): Improve boundary + checking while parsing. + + * docs/CHANGES: Updated. + +2003-10-21 Josselin Mouette + + * include/freetype/internal/t1types.h (T1_FontRec): `paint_type' + and `stroke_width' aren't pointers. + + * src/type42/t42objs.c (T42_Face_Done), src/type1/t1objs.c + (T1_Face_Done): Don't free `paint_type' and `stroke_width'. + +2003-10-20 Graham Asher + + * src/winfonts/winfnt.c (fnt_cmap_class): Fix position of `const'. + +2003-10-19 Werner Lemberg + + * src/autohint/ahhint.c (ah_hinter_load_glyph): Patch from + 2003-08-18 introduced a severe bug (FT_Render_Glyph was called + twice under some circumstances, causing strange results). This + is fixed now by clearing the FT_LOAD_RENDER bit of `load_flags'. + + * src/base/ftpfr.c (FT_Get_PFR_Metrics): Initialize `error'. + * src/psaux/psobjs.c (ps_tobytes): Initialize `n'. + * src/type42/t42parse.c (t42_parse_sfnts): Initialize `string_size'. + +2003-10-16 Werner Lemberg + + Completely revised Type 42 parser. It now handles both fonts + produced with ttftot42 (tested version 0.3.1) and + TrueTypeToType42.ps (tested version May 2001; it is necessary to + fix the broken header comment to be `%!PS-TrueTypeFont...'). + + * src/type42/t42objs.c (T42_GlyphSlot_Load): Change fourth + parameter to `FT_UInt'. + * src/type42/t42objs.h: Updated. + + * src/type42/t42parse.h (T42_ParserRec): Change type of `in_memory' + to FT_Bool. + (T42_Loader): Change type of `num_chars' and `num_glyphs' to + FT_UInt. + Add `swap_table' element. + * src/type42/t42parse.c (T42_KEYWORD_COUNT, T1_ToFixed, + T1_ToCoordArray, T1_ToTokenArray): Removed. + (T1_ToBytes): New macro. + (t42_is_alpha, t42_hexval): Removed. + (t42_is_space): Handle `\0'. + (t42_parse_encoding): Updated to use new PostScript parser routines + from psaux. + Handle `/Encoding [ ... ]' also. + (T42_Load_Status): New enumeration. + (t42_parse_sfnts): Updated to use new PostScript parser routines + from psaux. + (t42_parse_charstrings): Updated to use new PostScript parser + routines from psaux. + Handle `/CharStrings << ... >>' also. + Don't expect that /.notdef is the first element in dictionary. Copy + code from type1 module to handle this. + (t42_parse_dict): Updated to use new PostScript parser routines + from psaux. + Remove code for synthetic fonts (which can't occur in Type 42 + fonts). + (t42_loader_done): Release `swap_table'. + + * src/psaux/psobjs.c (skip_string): Increase `cur' properly. + + * src/type1/t1load.c (parse_charstrings): Make test for `.notdef' + faster. + +2003-10-15 Graham Asher + + * src/autohint/ahglobal.c (blue_chars), src/winfonts/winfnt.c + (fnt_cmap_class_rec, fnt_cmap_class), src/bdf/bdflib.c (empty, + _num_bdf_properties), src/gzip/infutil.c (inflate_mask), + src/gzip/inffixed.h (fixed_bl, fixed_bd, fixed_tl, fixed_td), + src/gzip/inftrees.h (inflate_trees_fixed), srf/gzip/inftrees.c + (inflate_trees_fixed): Decorate with more `const' to avoid + writable global variables which are disallowed on ARM. + +2003-10-08 Werner Lemberg + + * src/type1/t1load.c (parse_font_matrix, parse_charstrings): Remove + code specially for synthetic fonts; this is handled elsewhere. + (parse_encoding): Remove code specially for synthetic fonts; this is + handled elsewhere. + Improve boundary checking while parsing. + (parse_dict): Improve boundary checking while parsing. + Use ft_memcmp to simplify code. + +2003-10-07 Werner Lemberg + + * src/type1/t1load.c (parse_subrs, parse_dict): Handle synthetic + fonts properly. + (parse_charstrings): Copy correct number of characters into + `name_table'. + +2003-10-06 Werner Lemberg + + Heavy modification of the PS parser to handle comments and strings + correctly. This doesn't slow down the loading of PS fonts + significantly since charstrings aren't affected. + + * include/freetype/config/ftstdlib.h (ft_xdigit): Renamed to... + (ft_isxdigit): This. Updated all callers. + (ft_isdigit): New alias to `isdigit'. + + * include/freetype/internal/psaux.h (PS_Parser_FuncsRec): Renamed + `skip_alpha' to `skip_PS_token'. + Add parameter to `to_bytes' and change some argument types. + + * src/psaux/psauxmod.c (ps_parser_funcs): Updated. + * src/psaux/psobjs.c (ft_char_table): New array to map character + codes (ASCII and EBCDIC) of digits to numbers. + (OP): New auxiliary macro holding either `>=' or `<' depending on + the character encoding. + (skip_comment): New function. + (skip_spaces): Use it. + (skip_alpha): Removed. + (skip_literal_string, skip_string): New functions. + (ps_parser_skip_PS_token): New function. This is a better + replacement of... + (ps_parser_skip_alpha): Removed. + (ps_parser_to_token, ps_parser_to_token_array): Updated. + (T1Radix): Rewritten, using `ft_char_table'. + (t1_toint): Renamed to... + (ps_toint): This. Update all callers. + Use `ft_char_table'. + (ps_tobytes): Add parameter to handle delimiters and change some + argument types. + Use `ft_char_table'. + (t1_tofixed): Renamed to... + (ps_tofixed): This. Update all callers. + Use `ft_char_table'. + (t1_tocoordarray): Renamed and updated to... + (ps_tocoordarray): This. Update all callers. + (t1_tofixedarray): Renamed and updated to... + (ps_tofixedarray): This. Update all callers. + (t1_tobool): Renamed to... + (ps_tobool): This. Update all callers. + (ps_parser_load_field): Updated. + (ps_parser_load_field_table): Use `T1_MAX_TABLE_ELEMENTS' + everywhere. + (ps_parser_to_int, ps_parser_to_fixed, ps_parser_to_coord_array, + ps_parser_to_fixed_array): Skip spaces. Updated. + (ps_parser_to_bytes): Add parameter to handle delimiters and change + some argument types. Updated. + * src/psaux/psobjs.h: Updated. + + * src/cid/cidload.c (cid_parse_dict): Updated. + * src/cid/cidparse.c (cid_parser_new): Check whether the `StartData' + token was really found. + * src/cid/cidparse.h (cid_parser_skip_alpha): Updated and renamed + to... + (cid_parser_skip_PS_token): This. + + * src/type1/t1parse.h (T1_ParserRec): Use `FT_Bool' for boolean + fields. + (T1_Skip_Alpha): Replaced with... + (T1_Skip_PS_Token): This new macro. + * src/type1/t1parse.c (hexa_value): Removed. + (T1_Get_Private_Dict): Use `ft_isxdigit' and + `psaux->ps_parser_funcs_to_bytes' for handling ASCII hexadecimal + encoding. + After decrypting, replace the four random bytes at the beginning + with whitespace. + * src/type1/t1load.c (t1_allocate_blend): Use proper error values. + (parser_blend_design_positions, parse_blend_design_map, + parse_weight_vector): Updated. + (is_space): Handle `\f' also. + (is_name_char): Removed. + (read_binary_data): Updated. + (parse_encoding): Use `ft_isdigit'. + Updated. + (parse_subrs): Updated. + (TABLE_EXTEND): New macro. + (parse_charstrings): Updated. + Provide a workaround for buggy fonts which have more entries in the + /CharStrings dictionary then expected; the function now adds some + slots and skips entries which still exceed the new limit. + (parse_dict): Updated. + Terminate on the token `closefile'. + + * src/type42/t42parse.c (T1_Skip_Alpha): Replaced with... + (T1_Skip_PS_Token): This new macro. Updated all callers. + (t42_parse_encoding): Use `ft_isdigit'. + + + * src/base/ftmm.c (ft_face_get_mm_service): Return FT_Err_OK if + success. + +2003-10-05 Werner Lemberg + + * include/freetype/ftmodule.h: Renamed to... + * include/freetype/ftmodapi.h: This to avoid duplicate file names. + * include/freetype/config/ftheader.h (FT_MODULE_H): Updated. + +2003-10-04 Werner Lemberg + + * src/base/ftoutln.c (FT_OrientationExtremumRec, + FT_Outline_Get_Orientation): Trivial typo fixes to make it compile. + +2003-10-02 Markus F.X.J. Oberhumer + + * src/winfonts/winfnt.c (FT_WinFNT_HeaderRec): `color_table_offset' + has four bytes, not two. + Fix all users. + (fnt_font_load, FNT_Load_Glyph): Add more font validity tests. + +2003-10-01 David Turner + + * src/autofit/*: Adding first source files of the new multi-script + `auto-fitter'. + + * include/freetype/ftoutln.h (FT_Orientation): New enumeration. + (FT_Outline_Get_Orientation): New declaration. + + * src/base/ftoutln.c (FT_OrientationExtremumRec): New structure. + (ft_orientation_extremum_compute): New auxiliary function. + (FT_Outline_Get_Orientation): New function to compute the fill + orientation of a given glyph outline. + + * include/freetype/internal/ftserv.h (FT_FACE_LOOKUP_SERVICE): Fixed + trivial bug which could crash the font engine when a cached service + pointer was retrieved. + +2003-09-30 Werner Lemberg + + * src/cid/cidload.c (cid_parse_dict): Skip token if no keyword is + found. + + * src/type1/t1parse.c (IS_T1_WHITESPACE, IS_T1_LINESPACE, + IS_T1_SPACE): Removed. + (PFB_Tag): Removed. + (read_pfb_tag): Don't use PFB_Tag. + + * src/type42/t42parse.c (t42_is_space): Handle `\f' also. + (t42_parse_encoding): Handle synthetic fonts. + +2003-09-29 Werner Lemberg + + * include/freetype/internal/t1types.h: Don't include + FT_INTERNAL_OBJECTS_H but FT_INTERNAL_SERVICE_H. + * src/truetype/ttobjs.c: Don't include + FT_SERVICE_POSTSCRIPT_NAMES_H. + +2003-09-29 David Turner + + Added new service to handle glyph name dictionaries, replacing the + old internal header named `psnames.h' by `services/svpsname.h'. + Note that this is different from `services/svpostnm.h' which only + handles the retrieval of PostScript font names for a given face. + (Should we merge these two services into a single header?) + + * include/freetype/internal/psnames.h: Removed. Most of its + contents is moved to... + * include/freetype/internal/services/svpsname.h: New file. + + * include/freetype/internal/services/svpostnm.h + (FT_SERVICE_ID_POSTSCRIPT_NAME): Replaced with... + (FT_SERVICE_ID_POSTSCRIPT_FONT_NAME): New macro. + (PsName): Service named changed to... + (PsFontName): This. + Updated `FT_Service_PsName' -> `FT_Service_PsFontName' and + `POSTSCRIPT_NAME' -> `POSTSCRIPT_FONT_NAME' everywhere. + + * include/freetype/internal/internal.h + (FT_INTERNAL_POSTSCRIPT_NAMES_H): Removed. + * include/freetype/internal/psaux.h: Include + FT_SERVICE_POSTSCRIPT_NAMES_H. + (T1_DecoderRec): Updated type of `psnames'. + * include/freetype/internal/t1types.h: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + Include FT_INTERNAL_OBJECTS_H. + * include/freetype/internal/t42types.h: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H. + * include/freetype/internal/tttypes.h (TT_FaceRec): Updated. + + * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE): Changed + order of parameters. All callers updated. + (FT_FACE_FIND_GLOBAL_SERVICE): New macro to look up a service + globally, checking all modules. + (FT_ServiceCacheRec): Updated. + (FT_SERVICE_POSTSCRIPT_NAMES_H): New macro for accessing + `svpsname.h'. + + * include/freetype/internal/ftobjs.h, src/base/ftobjs.c + (ft_module_get_service): New function. + + * src/cff/cffdrivr.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H + but FT_SERVICE_POSTSCRIPT_NAMES_H. + (cff_get_glyph_name, cff_get_name_index): Use new POSTSCRIPT_NAMES + service. + * src/cff/cffcmap.c (cff_cmap_unicode_init): Updated. + * src/cff/cffload.c, src/cff/cffload.h: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + (cff_index_get_sid_string): Updated. + * src/cff/cffobjs.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H + but FT_SERVICE_POSTSCRIPT_NAMES_H. + (cff_face_init): Use new POSTSCRIPT_NAMES service. + * src/cff/cffobjs.h: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H + but FT_SERVICE_POSTSCRIPT_NAMES_H. + + * src/cid/cidobjs.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H + but FT_SERVICE_POSTSCRIPT_NAMES_H. + (cid_face_init): Use new POSTSCRIPT_NAMES service. + * src/cid/cidriver.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H. + + * src/psaux/t1cmap.c (t1_cmap_std_init, t1_cmap_unicode_init): Use + new POSTSCRIPT_NAMES service. + * src/psaux/t1decode.h (t1_lookup_glyph_by_stdcharcode, + t1_decode_init): Use new POSTSCRIPT_NAMES service. + * src/psaux/t1cmap.h, src/psaux/t1decode.h: Dont' include + FT_INTERNAL_POSTSCRIPT_NAMES_H. + + * src/psnames/psmodule.c: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + (ps_build_unicode_table): Renamed to... + (ps_unicodes_init): This. + (ps_lookup_unicode): Renamed to... + (ps_unicodes_char_index): This. + (ps_next_unicode): Renamed to... + (ps_unicodes_char_next): This. + (psnames_interface): Updated. + (psnames_services): New services list. + (psnames_get_service): New function. + (psnames_module_class): Updated. + + * src/sfnt/sfobjs.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H + but FT_SERVICE_POSTSCRIPT_NAMES_H. + (sfnt_init_face): Use new POSTSCRIPT_NAMES service. + * src/sfnt/ttpost.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H + but FT_SERVICE_POSTSCRIPT_NAMES_H. + (tt_face_get_ps_name): Updated. + + * src/truetype/ttobjs.c: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + + * src/type1/t1driver.c: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + * src/type1/t1objs.c: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + (T1_Face_Init): Use new POSTSCRIPT_NAMES service. + + * src/type42/t42drivr.c (t42_get_ps_name): Renamed to... + (t42_get_ps_font_name): This. + (t42_service_ps_name): Renamed to... + (t42_service_ps_font_name): This. + (t42_services): Updated. + * src/type42/t42objs.c (T42_Face_Init): Use new POSTSCRIPT_NAMES + service. + * src/type42/t42objs.h: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + + + * src/base/ftglyph.c (FT_Get_Glyph): Don't access `slot' before + testing its validity. Reported by Henry Maddocks + . + +2003-09-21 Werner Lemberg + + * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE): + Fix compilation warning (s/pptr/Pptr/). + + * include/freetype/internal/internal.h (FT_INTERNAL_PFR_H, + FT_INTERNAL_FNT_TYPES_H): Removed. + +2003-09-21 David Turner + + Migrating the PFR and WINFNT drivers to the new service-based + internal API. + + * include/freetype/internal/fnttypes.h: Removed. Most of its data + are moved to winfnt.h and... + * include/freetype/internal/services/svwinfnt.h: New file. + + * include/freetype/internal/pfr.h: Removed. Most of its data are + moved to... + * include/freetype/internal/services/svpfr.h: New file. + + * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE, + FT_FACE_LOOKUP_SERVICE): Simplify fix of 2003-09-16 by removing + pointer type argument. + Updated all callers. + Update macro names of services header files. + + * src/base/ftobjs.c (FT_Get_Name_Index): Simplified code. + + * src/base/ftpfr.c: Include FT_SERVICE_PFR_H instead of + FT_INTERNAL_PFR_H. + (ft_pfr_check, FT_Get_PFR_Metrics, FT_Get_PFR_Kerning, + FT_Get_PFR_Advance): Use services provided in `PFR_METRICS'. + + * src/base/ftwinfnt.c: Include FT_SERVICE_WINFNT_H instead of + FT_INTERNAL_FNT_TYPES_H. + (FT_Get_WinFNT_Header): Use service provided in `WINFNT'. + + * src/pfr/pfrdrivr.c: Include FT_SERVICE_PFR_H and + FT_SERVICE_XFREE86_NAME_H instead of FT_INTERNAL_PFR_H. + (pfr_service_bdf): Updated. + (pfr_services): New services list. + (pfr_get_service): New function. + (pfr_driver_class): Updated. + + * src/winfonts/winfnt.c: Include FT_SERVICE_WINFNT_H and + FT_SERVICE_XFREE86_NAME_H instead of FT_INTERNAL_FNT_TYPES_H. + (winfnt_get_header, winfnt_get_service): New functions. + (winfnt_service_rec): New structure providing WINFNT services. + (winfnt_services): New services list. + (winfnt_driver_class): Updated. + * src/winfonts/winfnt.h: Add most of the removed fnttypes.h data. + + * src/sfnt/sfdriver.c (sfnt_service_ps_name): Fix typo. + + * src/type1/t1driver.c (t1_service_ps_name): Fix typo. + + * src/cff/cffobjs.c, src/cid/cidobjs.c, src/pfr/pfrsbit.c, + src/psaux/psobjs.c, src/sfnt/sfobjs.c, src/truetype/ttobjs.c, + src/type1/t1objs.c, src/type42/t42objs.c: Removing various compiler + warnings. + +2003-09-19 David Bevan + + * src/type1/t1parse.c (pfb_tag_fields): Removed. + (read_pfb_tag): Fix code so that it doesn't fail on end-of-file + indicator (0x8003). + * docs/CHANGES: Updated. + +2003-09-16 Werner Lemberg + + * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE, + FT_FACE_LOOKUP_SERVICE): Add parameter to pass pointer type. + Ugly, I know, but this is needed for compilation with C++ -- + maybe someone knows a better solution? + Updated all callers. + + * src/base/ftobjs.c (FT_Get_Name_Index, FT_Get_Glyph_Name): Remove + C++ compiler warnings. + + * src/base/ftbdf.c (FT_Get_BDF_Charset_ID, FT_Get_BDF_Property): + Fix order of arguments passed to FT_FACE_FIND_SERVICE. + +2003-09-15 Werner Lemberg + + Avoid header files with identical names. + + * include/freetype/internal/services/bdf.h: Renamed to... + * include/freetype/internal/services/svbdf.h: This. + Add copyright notice. + * include/freetype/internal/services/glyfdict.h: Renamed to... + * include/freetype/internal/services/svgldict.h: This. + Add copyright notice. + * include/freetype/internal/services/multmast.h: Renamed to... + * include/freetype/internal/services/svmm.h: This. + Add copyright notice. + Add FT_BEGIN_HEADER and FT_END_HEADER. + * include/freetype/internal/services/sfnt.h: Renamed to... + * include/freetype/internal/services/svsfnt.h: This. + Add copyright notice. + * include/freetype/internal/services/postname.h: Renamed to... + * include/freetype/internal/services/svpostnm.h: This. + Add copyright notice. + * include/freetype/internal/services/xf86name.h: Renamed to... + * include/freetype/internal/services/svxf86nm.h: This. + Add copyright notice. + + * include/freetype/internal/ftserv.h: Add FT_BEGIN_HEADER and + FT_END_HEADER. + Add copyright notice. + Update macro names of services header files. + + * builds/freetype.mk (SERVICES_DIR): New variable. + (BASE_H): Add services header files. + +2003-09-11 Werner Lemberg + + * builds/toplevel.mk (distclean): Remove `builds/unix/freetype2.pc'. + + * src/cff/cffdrivr.c: Don't load headers twice. + + * include/freetype/internal/ftserv.h (FT_SERVICE_SFNT_H): New macro. + * src/base/ftobjs.c: Include FT_SERVICE_SFNT_H. + + * src/cff/cffcmap.c: Include `cfferrs.h'. + * src/pfr/pfrdrivr.c: Include `pfrerror.h'. + * src/sfnt/sfdriver.c: Include `sferrors.h'. + * src/psaux/psobjs.h: Add declaration for `ps_parser_to_bytes'. + +2003-09-11 David Turner + + Introducing the concept of `module services'. This is the first + step towards a massive simplification of the engine's internals, in + order to get rid of various numbers of hacks. + + Note that these changes will break source & binary compatibility for + authors of external font drivers. + + * include/freetype/config/ftconfig.h (FT_BEGIN_STMNT, FT_END_STMNT, + FT_DUMMY_STMNT): New macros. + + * include/freetype/internal/ftserv.h: New file, containing the new + structures and macros to provide `services'. + + * include/freetype/internal/internal.h (FT_INTERNAL_EXTENSION_H, + FT_INTERNAL_EXTEND_H, FT_INTERNAL_HASH_H, FT_INTERNAL_OBJECT_H): + Removed, obsolete. + (FT_INTERNAL_SERVICE_H): New macro for `ftserv.h'. + + * include/freetype/internal/services/bdf.h, + include/freetype/internal/services/glyfdict.h, + include/freetype/internal/services/postname.h, + include/freetype/internal/services/xf86name.h: New files. + + * include/freetype/ftmm.h (FT_Get_MM_Func, FT_Set_MM_Design_Func, + FT_Set_MM_Blend_Func): Function pointers moved (in modified form) + to... + * include/freetype/internal/services/multmast.h: New file. + + * include/freetype/internal/sfnt.h (SFNT_Interface): `get_interface' + is now of type `FT_Module_Requester'. + (SFNT_Get_Interface_Func, SFNT_Load_Table_Func): Function pointers + moved (in modified form) to... + * include/freetype/internal/services/sfnt.h: New file. + + * include/freetype/tttables.h (FT_Get_Sfnt_Table_Func): Function + pointer moved (in modified form) to `services/sfnt.h'. + + * include/freetype/ftmodule.h (FT_Module_Interface): Make it a + a typedef to `FT_Pointer'. + + * include/freetype/internal/tttypes.h (TT_FaceRec): Add + `postscript_name'. + * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Remove + `postscript_name'. + Add `services' element. + (FT_LibraryRec): Remove `meta_class'. + + * src/base/ftbdf.c: Include FT_SERVICE_BDF_H. + (test_font_type): Removed. + (FT_Get_BDF_Charset_ID, FT_Get_BDF_Property): Use services + provided in `FT_SERVICE_ID_BDF'. + + * src/base/ftmm.c: Include FT_SERVICE_MULTIPLE_MASTERS_H. + (ft_face_get_mm_service): New auxiliary function to get services + from `FT_SERVICE_ID_MULTI_MASTERS'. + (FT_Get_Multi_Master, FT_Set_MM_Design_Coordinates, + FT_Set_MM_Blend_Coordinates): Use `ft_face_get_mm_service'. + + * src/base/ftobjs.c: Include FT_SERVICE_POSTSCRIPT_NAME_H and + FT_SERVICE_GLYPH_DICT_H. + (ft_service_list_lookup): New function to get a specific service. + (destroy_face): Updated. + (Mac_Read_POST_Resource): Simplify some code. + (IsMacResource): Fix warnings. + (FT_Get_Name_Index, FT_Get_Glyph_Name): Use services provided in + `FT_SERVICE_ID_GLYPH_DICT'. + (FT_Get_Postscript_Name): Use service provided in + `FT_SERVICE_ID_POSTSCRIPT_NAME'. + (FT_Get_Sfnt_Table, FT_Load_Sfnt_Table): Use services provided in + `FT_SERVICE_ID_SFNT_TABLE'. + + * src/base/ftxf86.c: Include FT_SERVICE_XFREE86_NAME_H. + (FT_Get_X11_Font_Format): Use service provided in + `FT_SERVICE_ID_XF86_NAME'. + + * src/bdf/bdfdrivr.c: Include FT_SERVICE_BDF_H and + FT_SERVICE_XFREE86_NAME_H. + (bdf_get_charset_id): New function. + (bdf_service_bdf): New structure providing BDF services. + (bdf_services): New services list. + (bdf_driver_requester): Use `ft_service_list_lookup'. + + * src/cff/cffdrivr.c: Include FT_SERVICE_XFREE86_NAME_H and + FT_SERVICE_GLYPH_DICT_H. + (cff_service_glyph_dict): New structure providing CFF services. + (cff_services): New services list. + (cff_get_interface): Use `ft_service_list_lookup'. + + * src/cid/cidriver.c: Include FT_SERVICE_POSTSCRIPT_NAME_H and + FT_SERVICE_XFREE86_NAME_H. + (cid_service_ps_name): New structure providing CID services. + (cid_services): New services list. + (cid_get_interface): Use `ft_service_list_lookup'. + + * src/pcf/pcfdrivr.c: Include FT_SERVICE_BDF_H and + FT_SERVICE_XFREE86_NAME_H. + (pcf_service_bdf): New structure providing PCF services. + (pcf_services): New services list. + (pcf_driver_requester): Use `ft_service_list_lookup'. + + * src/sfnt/sfdriver.c: Include FT_SERVICE_GLYPH_DICT_H and + FT_SERVICE_POSTSCRIPT_NAME_H. + (get_sfnt_glyph_name): Renamed to... + (sfnt_get_glyph_name): This. + (get_sfnt_postscript_name): Renamed to... + (sfnt_get_ps_name): This. + Updated. + (sfnt_service_glyph_dict, sfnt_service_ps_name): New structures + providing services. + (sfnt_services): New services list. + (sfnt_get_interface): Use `ft_service_list_lookup'. + + * src/truetype/ttdriver.c: Include FT_SERVICE_XFREE86_NAME_H. + (tt_services): New services list. + (tt_get_interface): Use `ft_service_list_lookup'. + + * src/type1/t1driver.c: Include FT_SERVICE_MULTIPLE_MASTERS_H, + FT_SERVICE_GLYPH_DICT_H, FT_SERVICE_XFREE86_NAME_H, and + FT_SERVICE_POSTSCRIPT_NAME_H. + (t1_service_glyph_dict, t1_service_ps_name, + t1_service_multi_masters): New structures providing Type 1 services. + (t1_services): New services list. + (Get_Interface): Use `ft_service_list_lookup'. + + * src/type42/t42drivr.c: Include FT_SERVICE_XFREE86_NAME_H, + FT_SERVICE_GLYPH_DICT_H, and FT_SERVICE_POSTSCRIPT_NAME_H. + (t42_service_glyph_dict, t42_service_ps_name): New strucures + providing Type 42 services. + (t42_services): New services list. + (T42_Get_Interface): Use `ft_service_list_lookup'. + + + * README, docs/CHANGES: Updating version numbers for 2.1.6, and + removing obsolete warnings in the documentation. + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 6. + * builds/unix/configure.ac (version_info): Set to 9:5:3. + * builds/unix/configure: Regenerated. + + * include/freetype/internal/ftcore.h, + include/freetype/internal/ftexcept.h, + include/freetype/internal/fthash.h, + include/freetype/internal/ftobject.h: Removed. Obsolete. + +2003-09-09 David Turner + + Fixing PFR kerning support. The tables within the font file contain + (charcode,charcode) kerning pairs, we need to convert them to + (gindex,gindex). + + * src/base/ftpfr.c (ft_pfr_check): Fix serious typo. + * src/pfr/prfload.c: Remove dead code. + (pfr_get_gindex, pfr_compare_kern_pairs, pfr_sort_kerning_pairs): + New functions. + (pfr_phy_font_done): Free `kern_pairs'. + (pfr_phy_font_load): Call `pfr_sort_kerning_pairs'. + * src/pfr/pfrobjs.c (pfr_face_get_kerning): Fix kerning extraction. + * src/pfr/pfrtypes.h (PFR_KERN_PAIR_INDEX): New macro. + (PFR_KernPairRec): Make `kerning' an FT_Int. + (PFR_PhyFontRec): New element `kern_pairs'. + (PFR_KernFlags): Values of PFR_KERN_2BYTE_CHAR and + PFR_KERN_2BYTE_ADJ were erroneously reversed. + + * include/freetype/ftoption.h: Commenting out the macro + TT_CONFIG_OPTION_BYTECODE_INTERPRETER. + +2003-09-02 David Turner + + + * Version 2.1.5 released. + ========================= + + +2003-08-31 Manish Singh + + * src/bdf/bdflib.c (_bdf_readstream): Don't use FT_MEM_COPY but + FT_MEM_MOVE. + +2003-08-30 Werner Lemberg + + * include/freetype/freetype.h (FT_ENCODING_SJIS, FT_ENCODING_GB2312, + FT_ENCODING_BIG5, FT_ENCODING_WANSUNG, FT_ENCODING_JOHAB): New + enumerations of FT_Encoding. The FT_ENCODING_MS_* variants except + FT_ENCODING_MS_SYMBOL are now deprecated. + Updated all users. + * docs/CHANGES: Document it. + +2003-08-27 Werner Lemberg + + * src/bdf/bdfdrivr.c (BDF_Face_Init): Accept lowercase characters + for spacing. + +2003-08-27 Mike FABIAN + + * src/pcf/pcfread.c (pcf_load_font), src/bdf/bdfdrivr.c + (BDF_Face_Init): Accept lowercase characters for slant and weight. + +2003-08-18 David Turner + + * include/freetype/config/ftoption.h: Disabling TrueType bytecode + interpreter until the UNPATENTED_HINTING works as advertised. + + * src/autohint/ahhint.c (ah_hinter_load_glyph): Use `|' for + setting `load_flags'. + + * Jamfile: Adding the `refdoc' target to the Jamfile in order to + build the API Reference in `docs/reference' automatically. + + * include/freetype/t1tables.h (PS_FontInfoRec), src/cid/cidtoken.h, + src/type1/t1tokens.h, src/type42/t42parse.c: Resetting the types of + `italic_angle', `underline_position', and `underline_thickness' to + their previous values (i.e., long, short, and ushort) in order to + avoid breaking binary compatibility. + + * include/freetype/ttunpat.h: Fixing documentation comment. + + * include/freetype/config/ftoption.h, devel/ftoption.h + (TT_CONFIG_OPTION_OPTION_COMPILE_UNPATENTED_HINTING): Replaced + with... + (TT_CONFIG_OPTION_UNPATENTED_HINTING): This. Updated all users. + (TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING): Removed. + + * include/freetype/internal/ftobjs.h (FT_DEBUG_HOOK_TYPE1): Removed. + (FT_DEBUG_HOOK_UNPATENTED_HINTING): New macro. Use this with + `FT_Set_Debug_Hook' to get the same effect as the removed + TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING. + + * src/truetype/ttobjs.c (tt_face_init): Use + `FT_DEBUG_HOOK_UNPATENTED_HINTING'. + +2003-08-06 Werner Lemberg + + * src/type1/t1gload.c (T1_Load_Glyph), src/cff/cffgload.c + (cff_slot_load), src/cid/cidgload.c (cid_slot_load_glyph): Fix + previous change. + +2003-08-05 Werner Lemberg + + * src/type1/t1gload.c (T1_Load_Glyph), src/cff/cffgload.c + (cff_slot_load), src/cid/cidgload.c (cid_slot_load_glyph): Apply + font matrix to advance width also. + * docs/CHANGES: Updated. + +2003-07-26 Werner Lemberg + + * builds/unix/configure.ac (version_info): Set to 9:4:3. + * builds/unix/configure: Updated. + * docs/CHANGES, docs/VERSION.DLL: Updated. + + * include/freetype/freetype.h (FT_GlyphSlot): Change 2003-06-16 + also breaks binary compatibility. Reintroduce an unsigned integer + at the old position of `flags' called `reserved'. + +2003-07-25 Werner Lemberg + + Make API reference valid HTML 4.01 transitional. + + * src/tools/docmaker/tohtml.py (html_header_1): Add doctype + and charset. + (html_header_2): Fix style elements and add some more. + Fix syntax. + (block_header, block_footer, description_header, description_footer, + marker_header, marker_footer, source_header, source_footer, + chapter_header): Don't use
...
but `align=center' + table attribute. + (chapter_inter, chapter_footer): Add
  • and use special