Учитывая контур шрифта, рассчитать его осевую линию? - PullRequest
0 голосов
/ 14 февраля 2019

Мне требуются координаты xy каждой буквы шрифта.Используя библиотеку (grImport), я могу получить координаты xy контура шрифта.Вот пример буквы «м».

library(ggplot2)

letter_m <- structure(list(x = c(606, 606, 614, 614, 614, 614.586, 614.703, 
                                 614.762, 615.527, 616.695, 616.953, 617.129, 618.609, 620.555, 
                                 620.969, 621.301, 623.574, 626.082, 626.922, 627.508, 629.273, 
                                 631.07, 631.359, 631.617, 632.871, 633.953, 634.125, 634.285, 
                                 635.508, 635.578, 635.598, 635.82, 636, 636, 636, 644, 644, 644, 
                                 644.836, 646.797, 647.359, 647.891, 651.32, 655.309, 656.641, 
                                 657.273, 659.18, 661.039, 661.344, 661.617, 662.926, 664.031, 
                                 664.203, 664.355, 665.547, 665.609, 665.621, 665.813, 665.984, 
                                 665.984, 665.984, 673.984, 673.984, 673.902, 673.566, 673.008, 
                                 672.813, 672.547, 671.301, 669.883, 669.531, 669.133, 667.141, 
                                 664.961, 664.469, 663.938, 661.281, 658.715, 657.859, 656.688, 
                                 653.18, 649.773, 649.109, 648.434, 645.496, 643.094, 642.688, 
                                 642.383, 640.578, 638.18, 637.578, 636.926, 633.672, 630.543, 
                                 629.5, 628.289, 624.668, 620.508, 616.965, 614.633, 614, 613.531, 
                                 613.531, 606, 606), y = c(5972.89, 5925, 5925, 5954.78, 5955.65, 
                                                           5957.9, 5958.25, 5958.66, 5960.39, 5961.96, 5962.28, 5962.66, 
                                                           5964.17, 5965.38, 5965.61, 5965.87, 5966.7, 5967, 5967, 5967, 
                                                           5966.8, 5966.34, 5966.2, 5966.14, 5965.36, 5964.22, 5963.98, 
                                                           5963.75, 5960.93, 5960.61, 5960.32, 5958.63, 5956.93, 5956.36, 
                                                           5925, 5925, 5954.78, 5956.04, 5959.81, 5963.12, 5963.67, 5964.25, 
                                                           5966.21, 5967, 5967, 5967, 5966.79, 5966.3, 5966.16, 5966.09, 
                                                           5965.28, 5964.13, 5963.89, 5963.66, 5960.84, 5960.52, 5960.23, 
                                                           5958.57, 5956.91, 5956.36, 5925, 5925, 5960.11, 5960.8, 5963.66, 
                                                           5966.01, 5966.45, 5966.94, 5968.91, 5970.47, 5970.75, 5971.05, 
                                                           5972.23, 5973.07, 5973.2, 5973.4, 5973.9, 5974, 5974, 5974, 5973.47, 
                                                           5972.24, 5971.89, 5971.55, 5969.36, 5966.56, 5965.92, 5966.66, 
                                                           5969.69, 5971.85, 5972.16, 5972.53, 5973.64, 5974, 5974, 5974, 
                                                           5973.49, 5971.96, 5969.41, 5966.8, 5965.84, 5965.84, 5972.89, 
                                                           5972.89, 5972.89)), row.names = c(NA, -105L), class = c("tbl_df", 
                                                                                                                   "tbl", "data.frame"))

# Plot outline of letter
ggplot(letter_m, aes(x = x, y = y)) +
  geom_path() +
  geom_point()

Но то, что я хочу, это центральная линия многоугольника.Нечто похожее на красную линию ниже.Любые идеи о том, как это сделать в R ?: m outline with centerline

...