platform/upstream/libHarfBuzzSharp.git
4 years ago[subset] cmap table to use _subset2 and new iterator frameworks
Qunxin Liu [Tue, 25 Jun 2019 20:17:30 +0000 (13:17 -0700)]
[subset] cmap table to use _subset2 and new iterator frameworks

4 years agoSome styling
Khaled Hosny [Sat, 3 Aug 2019 11:55:34 +0000 (13:55 +0200)]
Some styling

4 years ago[metrics] Add metrics tags documentation
Ebrahim Byagowi [Sat, 3 Aug 2019 09:49:28 +0000 (14:19 +0430)]
[metrics] Add metrics tags documentation

4 years ago[base] Add documentation for baseline tags from ot spec
Ebrahim Byagowi [Sat, 3 Aug 2019 09:36:46 +0000 (14:06 +0430)]
[base] Add documentation for baseline tags from ot spec

4 years ago[meta] Add metadata tags documentation from ot spec
Ebrahim Byagowi [Sat, 3 Aug 2019 09:17:55 +0000 (13:47 +0430)]
[meta] Add metadata tags documentation from ot spec

4 years ago[cpal] revert port to dagger
Ebrahim Byagowi [Tue, 30 Jul 2019 13:40:40 +0000 (18:10 +0430)]
[cpal] revert port to dagger

It has a different semantic, maybe we should just do a zero memset,
letting Behdad to decide.

4 years ago[cpal] port to dagger (#1887)
Ebrahim Byagowi [Tue, 30 Jul 2019 13:01:34 +0000 (17:31 +0430)]
[cpal] port to dagger (#1887)

4 years ago[colr] minor
Ebrahim Byagowi [Tue, 30 Jul 2019 12:50:18 +0000 (17:20 +0430)]
[colr] minor

4 years ago[fuzz] Add dummy call of the added APIs (#1886)
Ebrahim Byagowi [Tue, 30 Jul 2019 08:46:15 +0000 (13:16 +0430)]
[fuzz] Add dummy call of the added APIs (#1886)

4 years ago[colr][feat][meta] Port sub_array iteration to dagger (#1868)
Ebrahim Byagowi [Tue, 30 Jul 2019 00:14:23 +0000 (04:44 +0430)]
[colr][feat][meta] Port sub_array iteration to dagger (#1868)

4 years ago[base] Add hb_ot_layout_get_baseline API
Ebrahim Byagowi [Tue, 30 Jul 2019 00:12:51 +0000 (04:42 +0430)]
[base] Add hb_ot_layout_get_baseline API

4 years ago[var] Add a new API, hb_font_set_var_named_instance
Ebrahim Byagowi [Sat, 27 Jul 2019 09:03:46 +0000 (13:33 +0430)]
[var] Add a new API, hb_font_set_var_named_instance

4 years ago[meta] Make values match their enum type naming
Ebrahim Byagowi [Mon, 29 Jul 2019 23:15:45 +0000 (03:45 +0430)]
[meta] Make values match their enum type naming

4 years ago[metrics] Make values match their enum type naming
Ebrahim Byagowi [Mon, 29 Jul 2019 23:13:15 +0000 (03:43 +0430)]
[metrics] Make values match their enum type naming

4 years ago[base] Don't use enum inside the table
Ebrahim Byagowi [Mon, 29 Jul 2019 23:04:10 +0000 (03:34 +0430)]
[base] Don't use enum inside the table

4 years ago[lcar] flip for and switch position
Ebrahim Byagowi [Sat, 27 Jul 2019 10:26:18 +0000 (14:56 +0430)]
[lcar] flip for and switch position

4 years ago[metrics] Rename hb_ot_metrics_t to hb_ot_metrics_tag_t
Ebrahim Byagowi [Mon, 29 Jul 2019 17:33:56 +0000 (22:03 +0430)]
[metrics] Rename hb_ot_metrics_t to hb_ot_metrics_tag_t

4 years ago[meta] Rename hb_ot_meta_t to hb_ot_meta_tag_t
Ebrahim Byagowi [Mon, 29 Jul 2019 17:31:13 +0000 (22:01 +0430)]
[meta] Rename hb_ot_meta_t to hb_ot_meta_tag_t

4 years ago[iter] Fix accumulate to accept const types
Behdad Esfahbod [Mon, 29 Jul 2019 03:55:50 +0000 (20:55 -0700)]
[iter] Fix accumulate to accept const types

5 years agoIncrease subset fuzzer timeout to 8s
Ebrahim Byagowi [Sun, 28 Jul 2019 18:29:09 +0000 (22:59 +0430)]
Increase subset fuzzer timeout to 8s

Probably we should just remove timeout when running tsan and vaglrind here, the flaky bots

5 years ago[base] fix logic
Ebrahim Byagowi [Sun, 28 Jul 2019 16:16:47 +0000 (20:46 +0430)]
[base] fix logic

5 years ago[base] minor
Ebrahim Byagowi [Sun, 28 Jul 2019 16:09:20 +0000 (20:39 +0430)]
[base] minor

5 years ago[base] Check if the returned base_coord is valid
Ebrahim Byagowi [Sun, 28 Jul 2019 16:05:32 +0000 (20:35 +0430)]
[base] Check if the returned base_coord is valid

5 years ago[meta] minor
Ebrahim Byagowi [Sun, 28 Jul 2019 15:53:48 +0000 (20:23 +0430)]
[meta] minor

5 years ago[base] fix build
Ebrahim Byagowi [Sun, 28 Jul 2019 15:51:59 +0000 (20:21 +0430)]
[base] fix build

5 years ago[base] minor
Ebrahim Byagowi [Sun, 28 Jul 2019 15:16:57 +0000 (19:46 +0430)]
[base] minor

5 years ago[base] Fix use of bsearch
Ebrahim Byagowi [Sun, 28 Jul 2019 14:24:13 +0000 (18:54 +0430)]
[base] Fix use of bsearch

5 years ago[base] minor spacing
Ebrahim Byagowi [Sat, 27 Jul 2019 21:51:54 +0000 (02:21 +0430)]
[base] minor spacing

5 years agoMinor
Behdad Esfahbod [Fri, 26 Jul 2019 21:34:26 +0000 (14:34 -0700)]
Minor

5 years agoMerge pull request #1872 from darktohka/cmake-regex-fix
Ebrahim Byagowi [Fri, 26 Jul 2019 20:50:55 +0000 (01:20 +0430)]
Merge pull request #1872 from darktohka/cmake-regex-fix

[cmake] Fix CMake build on newer CMake versions

5 years ago[cmake] Fix CMake build on newer CMake versions
Derzsi Dániel [Fri, 26 Jul 2019 19:52:03 +0000 (22:52 +0300)]
[cmake] Fix CMake build on newer CMake versions

Unfortunately, newer CMake versions die during regex variable extraction, causing the build to fail.

This is caused by the lack of escaping used around variables in the extract_make_variable function, causing these variables to be automatically unwrapped into empty strings.

5 years ago[util] Fix memory leak
Zero King [Fri, 26 Jul 2019 15:43:51 +0000 (15:43 +0000)]
[util] Fix memory leak

5 years ago[metrics] Expose raw OS2/HHEA asc/dsc values using private tags (#1867)
Ebrahim Byagowi [Fri, 26 Jul 2019 12:16:04 +0000 (16:46 +0430)]
[metrics] Expose raw OS2/HHEA asc/dsc values using private tags (#1867)

5 years ago[meta] minor, simplify iterator
Ebrahim Byagowi [Thu, 25 Jul 2019 20:44:37 +0000 (01:14 +0430)]
[meta] minor, simplify iterator

5 years ago[meta] Rename ot-metadata to ot-meta per review
Ebrahim Byagowi [Thu, 25 Jul 2019 20:00:29 +0000 (00:30 +0430)]
[meta] Rename ot-metadata to ot-meta per review

5 years agoUse .sub_array for DataMap tags iteration
Ebrahim Byagowi [Thu, 25 Jul 2019 19:38:58 +0000 (00:08 +0430)]
Use .sub_array for DataMap tags iteration

5 years ago[meta] Add max value to hb_ot_metadata_t
Ebrahim Byagowi [Tue, 23 Jul 2019 22:40:41 +0000 (03:10 +0430)]
[meta] Add max value to hb_ot_metadata_t

5 years ago[meta] Add a test program for metadata
Ebrahim Byagowi [Tue, 23 Jul 2019 22:38:34 +0000 (03:08 +0430)]
[meta] Add a test program for metadata

5 years ago[meta] hb_ot_metadata_get_entries, tags iteration API
Ebrahim Byagowi [Tue, 23 Jul 2019 21:58:09 +0000 (02:28 +0430)]
[meta] hb_ot_metadata_get_entries, tags iteration API

5 years ago[meta] New API, hb_ot_metadata_reference_entry for fetching meta entries
Ebrahim Byagowi [Mon, 22 Jul 2019 19:05:08 +0000 (23:35 +0430)]
[meta] New API, hb_ot_metadata_reference_entry for fetching meta entries

5 years agominor spacing fix (#1869)
Ebrahim Byagowi [Thu, 25 Jul 2019 21:49:22 +0000 (02:19 +0430)]
minor spacing fix (#1869)

5 years ago[feat] minor
Ebrahim Byagowi [Thu, 25 Jul 2019 21:42:06 +0000 (02:12 +0430)]
[feat] minor

5 years ago[metrics] Add a test that actually practices variation (#1858)
Ebrahim Byagowi [Thu, 25 Jul 2019 18:52:00 +0000 (23:22 +0430)]
[metrics] Add a test that actually practices variation (#1858)

5 years agoAdd _MAX_VALUE to hb_ot_metrics_t (#1861)
Ebrahim Byagowi [Thu, 25 Jul 2019 10:19:02 +0000 (14:49 +0430)]
Add _MAX_VALUE to hb_ot_metrics_t (#1861)

5 years agominor
Ebrahim Byagowi [Thu, 25 Jul 2019 09:57:43 +0000 (14:27 +0430)]
minor

5 years agoAdd _MAX_VALUE to disabled baseline types enum
Ebrahim Byagowi [Thu, 25 Jul 2019 09:56:30 +0000 (14:26 +0430)]
Add _MAX_VALUE to disabled baseline types enum

5 years agoReplace 0x7FFFFFFFu in enums with HB_TAG_MAX_SIGNED
Ebrahim Byagowi [Tue, 23 Jul 2019 20:17:19 +0000 (00:47 +0430)]
Replace 0x7FFFFFFFu in enums with HB_TAG_MAX_SIGNED

5 years agominor, comment out meta table in list till its use
Ebrahim Byagowi [Mon, 22 Jul 2019 18:20:21 +0000 (22:50 +0430)]
minor, comment out meta table in list till its use

5 years agoMerge pull request #1851 from khaledhosny/fix-sbix-extents
Khaled Hosny [Mon, 22 Jul 2019 14:44:47 +0000 (16:44 +0200)]
Merge pull request #1851 from khaledhosny/fix-sbix-extents

Fix sbix glyph extents

5 years agoImplement meta table parsing
Ebrahim Byagowi [Mon, 22 Jul 2019 14:16:52 +0000 (18:46 +0430)]
Implement meta table parsing

5 years ago[metrics] Fix _get_variation API to works with actual coord values
Ebrahim Byagowi [Mon, 22 Jul 2019 14:05:55 +0000 (18:35 +0430)]
[metrics] Fix _get_variation API to works with actual coord values

5 years ago[metrics] _-prefix internal symbol
Behdad Esfahbod [Mon, 22 Jul 2019 11:48:32 +0000 (07:48 -0400)]
[metrics] _-prefix internal symbol

5 years agoFix warning on IBM compilers
Behdad Esfahbod [Mon, 22 Jul 2019 11:07:37 +0000 (07:07 -0400)]
Fix warning on IBM compilers

Fixes https://github.com/harfbuzz/harfbuzz/issues/1852

5 years agoFix sbix glyph extents
Khaled Hosny [Mon, 22 Jul 2019 01:57:24 +0000 (03:57 +0200)]
Fix sbix glyph extents

* The ‘height’ needs to be negated since the API returns “distance from
  top to bottom side”.
* Similarly, the ‘y_offset‘ needs to be added to the height to get the
  ‘y_bearing’, since sbix’s offset is “the point in the glyph relative
  to its lower-left corner which corresponds to the origin” while
  ‘y_bearing’ is the “top side of glyph from origin”.

With these changes the sbix glyph metrics return values similar to other
tables, as they were otherwise unusable.

5 years ago[metrics] Don't use metrics API in _common
Ebrahim Byagowi [Sun, 21 Jul 2019 21:36:07 +0000 (02:06 +0430)]
[metrics] Don't use metrics API in _common

As it is exposed with a different condition

5 years agoAdd hb_gdi_face_create API
Ebrahim Byagowi [Tue, 16 Jul 2019 17:57:01 +0000 (22:27 +0430)]
Add hb_gdi_face_create API

Based on Konstantin Ritt work posted on mailing list

5 years ago[metrics] minor, tweak comment
Ebrahim Byagowi [Sun, 21 Jul 2019 08:08:04 +0000 (12:38 +0430)]
[metrics] minor, tweak comment

5 years ago[docs] Minor
Behdad Esfahbod [Fri, 19 Jul 2019 18:19:31 +0000 (11:19 -0700)]
[docs] Minor

5 years agoRevert hhea fallback to OS/2 to its reverse way
Ebrahim Byagowi [Sat, 20 Jul 2019 18:33:51 +0000 (23:03 +0430)]
Revert hhea fallback to OS/2 to its reverse way

As searching number of hhea having fonts beats the number of OS/2
having ones in macOS 10.14.2

5 years agoBring back asc/desc abs logic used to be in hmtx table
Ebrahim Byagowi [Sat, 20 Jul 2019 10:31:37 +0000 (15:01 +0430)]
Bring back asc/desc abs logic used to be in hmtx table

5 years agoMake HB_TINY builds work again by separating the always needed part
Ebrahim Byagowi [Sat, 20 Jul 2019 10:20:31 +0000 (14:50 +0430)]
Make HB_TINY builds work again by separating the always needed part

5 years agoMerge _get_position_internal into _get_position
Ebrahim Byagowi [Sat, 20 Jul 2019 10:03:57 +0000 (14:33 +0430)]
Merge _get_position_internal into _get_position

5 years agoDefine post table only when used
Ebrahim Byagowi [Sat, 20 Jul 2019 09:33:36 +0000 (14:03 +0430)]
Define post table only when used

5 years agoMerge ot-metrics-internal.cc with ot-metrics now that isn't needed in subset
Ebrahim Byagowi [Sat, 20 Jul 2019 09:30:20 +0000 (14:00 +0430)]
Merge ot-metrics-internal.cc with ot-metrics now that isn't needed in subset

5 years agoDon't cache ascender/descender metrics
Ebrahim Byagowi [Sat, 20 Jul 2019 09:22:21 +0000 (13:52 +0430)]
Don't cache ascender/descender metrics

5 years ago[doc] minor, improve hb-ot-metrics doc a bit
Ebrahim Byagowi [Sat, 20 Jul 2019 09:38:11 +0000 (14:08 +0430)]
[doc] minor, improve hb-ot-metrics doc a bit

5 years agoMerge pull request #1844 from ebraminio/hhea
Ebrahim Byagowi [Sat, 20 Jul 2019 08:46:16 +0000 (13:16 +0430)]
Merge pull request #1844 from ebraminio/hhea

Fallback hhea's ascender/descender to OS2

5 years ago[os2] minor spacing tweaks
Ebrahim Byagowi [Sat, 20 Jul 2019 08:23:40 +0000 (12:53 +0430)]
[os2] minor spacing tweaks

5 years agoFallback hhea's ascender/descender to OS2
Ebrahim Byagowi [Sat, 20 Jul 2019 08:21:38 +0000 (12:51 +0430)]
Fallback hhea's ascender/descender to OS2

5 years ago[metrics] Fall back to hhea if OS2 metrics are empty
Behdad Esfahbod [Fri, 19 Jul 2019 18:13:50 +0000 (11:13 -0700)]
[metrics] Fall back to hhea if OS2 metrics are empty

Reinstates previous logic, even if it might be unnecessary.

5 years agoAdd HB_NO_METRICS and fix HB_TINY build (#1839)
Ebrahim Byagowi [Fri, 19 Jul 2019 07:11:07 +0000 (11:41 +0430)]
Add HB_NO_METRICS and fix HB_TINY build (#1839)

5 years ago[ci][fuzzer] print valgrind failure if an error happened
Ebrahim Byagowi [Fri, 19 Jul 2019 06:03:00 +0000 (10:33 +0430)]
[ci][fuzzer] print valgrind failure if an error happened

5 years ago[metrics] Fix weird use of xor
Behdad Esfahbod [Thu, 18 Jul 2019 21:25:45 +0000 (14:25 -0700)]
[metrics] Fix weird use of xor

I believe that was a try to use one approach as fallback to other.  But
felt wrong.  Just believe what's in OS/2 table to be correct.

5 years ago[ot-metrics] Touch up
Behdad Esfahbod [Thu, 18 Jul 2019 21:15:08 +0000 (14:15 -0700)]
[ot-metrics] Touch up

5 years agoImplement a simple API for fetching opentype metrics
Ebrahim Byagowi [Tue, 20 Nov 2018 19:56:46 +0000 (23:26 +0330)]
Implement a simple API for fetching opentype metrics

Fixes https://github.com/harfbuzz/harfbuzz/pull/1432

5 years agoRevert "[Myanmar] Prevent reordering between Asat and Dot below"
David Corbett [Mon, 17 Jun 2019 14:16:24 +0000 (10:16 -0400)]
Revert "[Myanmar] Prevent reordering between Asat and Dot below"

This reverts commit 1c8654ead41ca746d577549c92d2a41c594ab639.

5 years ago[ci] Bring back -linux-arm64 bot
Ebrahim Byagowi [Wed, 17 Jul 2019 18:27:46 +0000 (22:57 +0430)]
[ci] Bring back -linux-arm64 bot

Let's see if 576065b has fixed it

5 years agoRevert "Revert previous change"
Behdad Esfahbod [Wed, 17 Jul 2019 18:20:08 +0000 (11:20 -0700)]
Revert "Revert previous change"

This reverts commit b8e90ca1a10fbd472eda1aa8cc3797011da52356.

Works now.

5 years ago[iter] Fix reduce type deduction
Behdad Esfahbod [Wed, 17 Jul 2019 18:19:34 +0000 (11:19 -0700)]
[iter] Fix reduce type deduction

5 years ago[ci] Disable -linux-arm64 bot
Ebrahim Byagowi [Wed, 17 Jul 2019 17:38:39 +0000 (22:08 +0430)]
[ci] Disable -linux-arm64 bot

This is its failure https://circleci.com/gh/harfbuzz/harfbuzz/99864

Trying to fix like ee05627, interestingly, makes the bot and the
others to fail like this https://circleci.com/gh/harfbuzz/harfbuzz/99841

5 years agoRevert previous change
Ebrahim Byagowi [Wed, 17 Jul 2019 17:08:19 +0000 (21:38 +0430)]
Revert previous change

Interestingly all of the bots disagreed with the change and the complain is... weird.

5 years agoImprove syntax to make out linux-arm64 a little happy
Ebrahim Byagowi [Wed, 17 Jul 2019 16:58:25 +0000 (21:28 +0430)]
Improve syntax to make out linux-arm64 a little happy

Decided to apply is we did the same on other places however this won't
fix all of its complains

5 years agoDowngrade -Wdeprecated-declarations to warning
Ebrahim Byagowi [Wed, 17 Jul 2019 16:52:38 +0000 (21:22 +0430)]
Downgrade -Wdeprecated-declarations to warning

Fixes #1834 at least till fix of #1829

5 years ago[amalgam] Fix redundant-declaration warning/error
Behdad Esfahbod [Wed, 17 Jul 2019 16:35:56 +0000 (09:35 -0700)]
[amalgam] Fix redundant-declaration warning/error

5 years agoFix C++20 compile warning on implicit capture of this with '=' default capture (...
Ali Javadi [Tue, 16 Jul 2019 17:40:24 +0000 (22:10 +0430)]
Fix C++20 compile warning on implicit capture of this with '=' default capture (#1833)

Happens when compiled with -std=c++2a, the fix just makes the captures explicit to resolve the issue. Just adding this in addition to = doesn't work in C++11.

src/hb-ot-layout-gpos-table.hh:737:18: warning: implicit capture of 'this' with a capture default of '=' is deprecated [-Wdeprecated-this-capture]
              { return (this+_).intersects (glyphs, valueFormat); })
                        ^
src/hb-ot-layout-gpos-table.hh:736:16: note: add an explicit capture of 'this' to capture '*this' by reference
    | hb_map ([=] (const OffsetTo<PairSet> &_)
               ^
                , this

5 years ago[usp] define atfree callback only if used
Ebrahim Byagowi [Tue, 16 Jul 2019 06:54:29 +0000 (11:24 +0430)]
[usp] define atfree callback only if used

5 years ago[subset] For option "--unicodes", add support for "*" to retain all code points
Qunxin Liu [Wed, 26 Jun 2019 20:23:24 +0000 (13:23 -0700)]
[subset] For option "--unicodes",  add support for "*" to retain all code points

5 years agoRevert "Update Graphite API to latest (#1215)"
Behdad Esfahbod [Fri, 12 Jul 2019 22:38:35 +0000 (15:38 -0700)]
Revert "Update Graphite API to latest (#1215)"

This reverts commit e4e74c2751ac24178086cce2811d34d8019b6f85.

See https://github.com/harfbuzz/harfbuzz/issues/1829

5 years ago[fuzz] Increase subset runner timeout for tsan bot
Ebrahim Byagowi [Thu, 11 Jul 2019 10:40:36 +0000 (15:10 +0430)]
[fuzz] Increase subset runner timeout for tsan bot

Now is flaky let's just increase and maybe investigate later

5 years ago[fuzz] Don't fail when blob is empty
Ebrahim Byagowi [Thu, 11 Jul 2019 10:01:55 +0000 (14:31 +0430)]
[fuzz] Don't fail when blob is empty

And enable more tests able to trig the issue.

5 years agoFix unintialized memory read in cmap subset (#1826)
Ebrahim Byagowi [Wed, 10 Jul 2019 21:05:06 +0000 (01:35 +0430)]
Fix unintialized memory read in cmap subset (#1826)

5 years agoDon't call memcpy when a table is empty
Ebrahim Byagowi [Wed, 10 Jul 2019 12:11:40 +0000 (16:41 +0430)]
Don't call memcpy when a table is empty

5 years agoForce blob generation and memory check in hb-subset-fuzzer
Ebrahim Byagowi [Wed, 10 Jul 2019 09:58:06 +0000 (14:28 +0430)]
Force blob generation and memory check in hb-subset-fuzzer

5 years agoRevert "Minor" - revert moving extern "C" definitions in-function
Dominik Röttsches [Mon, 8 Jul 2019 07:19:49 +0000 (10:19 +0300)]
Revert "Minor" - revert moving extern "C" definitions in-function

This reverts commit 62e60322cb9e18b3ee75f1b4a2a6d3069f587407 since it
breaks building HarfBuzz as part of Chromium.

Fixes https://github.com/harfbuzz/harfbuzz/issues/1821.

5 years ago[font] Remove division when scaling
Behdad Esfahbod [Fri, 5 Jul 2019 20:56:45 +0000 (13:56 -0700)]
[font] Remove division when scaling

Yoohoo.  This seems to be precise enough!  Let's see if it sticks.
I'm asking Dominik to run this in Chrome test suite and report.

Fixes https://github.com/harfbuzz/harfbuzz/issues/1801

5 years ago[font] Keep font-space to user-space multiplier
Behdad Esfahbod [Fri, 5 Jul 2019 20:52:09 +0000 (13:52 -0700)]
[font] Keep font-space to user-space multiplier

Part of https://github.com/harfbuzz/harfbuzz/issues/1801

5 years agoMake face immutable in hb_font_set_face()
Behdad Esfahbod [Fri, 5 Jul 2019 20:45:15 +0000 (13:45 -0700)]
Make face immutable in hb_font_set_face()

5 years ago[ot-font] Optimize rounding
Behdad Esfahbod [Fri, 5 Jul 2019 20:18:05 +0000 (13:18 -0700)]
[ot-font] Optimize rounding

Part of https://github.com/harfbuzz/harfbuzz/issues/1801

The assumption that compiler optimizes "upem/2" to a shift only
works if upem is unsigned...  Anyway, spoon-feed the compiler.

5 years agoClusters are reversed based on the direction, not script
Simon Sapin [Fri, 5 Jul 2019 17:05:11 +0000 (19:05 +0200)]
Clusters are reversed based on the direction, not script

Fixes https://github.com/harfbuzz/harfbuzz/issues/1818

5 years agoDocs: fix a typo in function name
Simon Sapin [Thu, 4 Jul 2019 19:06:59 +0000 (21:06 +0200)]
Docs: fix a typo in function name